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];

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);

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


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

13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

13

Swift 4+

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

9

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



7

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


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


2

Für Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Dies kann helfen, wenn jemand benötigt wird.


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

1

Versuchen

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
Das hat bei mir funktioniert, contentHorizontalAlignment nicht, danke.
Danfordham
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.