Wie setze ich den Titel von UIButton als linke Ausrichtung?

472

Ich muss die E-Mail-Adresse auf der linken Seite von a anzeigen UIButton, aber sie wird in der Mitte positioniert.

Gibt es eine Möglichkeit, die Ausrichtung auf die linke Seite von a einzustellen UIButton?

Dies ist mein aktueller Code:

UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];
Madan Mohan
quelle

Antworten:

1567

Legen Sie die contentHorizontalAlignment fest:

emailBtn.contentHorizontalAlignment = .left;

Möglicherweise möchten Sie auch den linken Inhalt anpassen, da der Text sonst den linken Rand berührt:

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);
Tieme
quelle
44
Beachten Sie, dass Sie diese beiden Eigenschaften auch im Interface Builder festlegen können.
Mihai Damian
1
Also war es Nummer 9000 von mir, danke, nützliche Antwort
Logik
6
Wir sind zu faul, um die Dokumentation zu durchsuchen. Was würden wir ohne SO tun!
Kedar Paranjape
3
Zeigt, dass SO besser dokumentiert ist als Apple-Dokumente.
GeneCode
1
UIControlContentHorizontalAlignmentLeadingund UIControlContentHorizontalAlignmentTrailingwurden in iOS 11
Cal Stephens
118

Sie können den Interface Builder auch verwenden, wenn Sie die Anpassungen im Code nicht vornehmen möchten. Hier habe ich den Text links ausgerichtet und auch eingerückt:

UIButton in IB

Vergessen Sie nicht, dass Sie auch ein Bild in der Schaltfläche ausrichten können:

Geben Sie hier die Bildbeschreibung ein

n8tr
quelle
Das hat mir eine Menge geholfen, ich kann nicht glauben, dass ich nicht realisiert habe, wofür diese Kontrollen gedacht waren.
Ethan Parker
Danke, es hat mir geholfen. Ohne die Pfeilanzeige in Ihren Beispielbildern konnte ich keine Kanteneinfügungen für den Schaltflächentitel herausfinden.
Ashok
in xcode 8.2.1 wurde es an einen anderen Ort verschoben, siehe meine Antwort unten
dang
Wie geht das programmgesteuert in kurzer Zeit? Ich möchte das Bild rechts und den Titel links ausrichten.
Visal Sambo
36

In Swift 3+:

button.contentHorizontalAlignment = .left
Vincent
quelle
13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Bhavik
quelle
13

Swift 4+

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
Zaid Pathan
quelle
9

Die Verwendung emailBtn.titleEdgeInsetsist besser als contentEdgeInsets, falls Sie nicht die gesamte Inhaltsposition innerhalb der Schaltfläche ändern möchten.

Gabriel
quelle
7

In Xcode 8.2.1 wird im Interface Builder Folgendes verschoben:Geben Sie hier die Bildbeschreibung ein

Mist
quelle
5

Es gibt einen kleinen Fehler im Code von @DyingCactus. Hier ist die richtige Lösung, um einem UIButton ein UILabel hinzuzufügen, um den Schaltflächentext auszurichten und den Schaltflächentitel besser zu steuern:

NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight); 

CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];   
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentLeft;

[myButton addSubview:myLabel];
[myLabel release];

Hoffe das hilft....

Al

Al-Noor Ladhani
quelle
2

Für Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Dies kann helfen, wenn jemand benötigt wird.

Suraj Sonawane
quelle
2

In Swift 5.0 und Xcode 10.2

Sie haben zwei Möglichkeiten, sich zu nähern

1) Direkter Ansatz

btn.contentHorizontalAlignment = .left

2) SharedClass- Beispiel (einmal schreiben und jede Ware verwenden)

Dies ist Ihre gemeinsam genutzte Klasse (so greifen Sie auf alle Komponenteneigenschaften zu)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

//UIButton extension
extension UIButton {
    func btnProperties() {
        contentHorizontalAlignment = .left
    }
}

Rufen Sie in Ihrem ViewController so auf

button.btnProperties()//This is your button
iOS
quelle
1

Versuchen

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
Gev
quelle
1
Das hat bei mir funktioniert, contentHorizontalAlignment nicht, danke.
Danfordham