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.