UIButton başlığı sola hizalama olarak nasıl ayarlanır?


472

E-posta adresini a'nın sol tarafından görüntülemem gerekiyor UIButton, ancak ortasına yerleştiriliyor.

A'nın sol tarafına hizalamayı ayarlamanın bir yolu var mı UIButton?

Bu benim şu anki kodum:

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

Yanıtlar:


1567

İçeriği ayarlama

emailBtn.contentHorizontalAlignment = .left;

Ayrıca, iç metin soldaki içeriği ayarlamak isteyebilirsiniz, aksi takdirde metin sol kenarlığa dokunacaktır:

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

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);

44
Bu özelliklerin her ikisini de Arayüz Oluşturucu'dan ayarlayabileceğinizi unutmayın.
Mihai Damian

1
bu yüzden benden 9000 numaraydı, teşekkürler, faydalı cevap
Mantık

6
Belgeleri aramak için çok tembeliz. SO olmadan ne yapardık!
Kedar Paranjape

3
SO belgesinin Apple belgesinden daha iyi belgelendiğini gösterir.
GeneCode

1
UIControlContentHorizontalAlignmentLeadingve UIControlContentHorizontalAlignmentTrailingiOS 11'de eklendi
Cal Stephens

118

Kodda ayarlamalar yapmak istemiyorsanız arayüz oluşturucuyu da kullanabilirsiniz. Burada metni hizalamak ve ayrıca bazı girinti bıraktı:

IB'de UIButton

Düğmedeki bir görüntüyü de hizalayabileceğinizi unutmayın:

resim açıklamasını buraya girin


Bu bana bir ton yardım etti, bu kontrollerin ne için olduğunu fark etmediğime inanamıyorum.
Ethan Parker

Teşekkürler, bana yardımcı oldu. Örnek resimlerinizdeki ok göstergesinin yardımı olmadan düğme başlığı için kenar iç metinlerini bulamadım.
Ashok

xcode 8.2.1'de başka bir yere taşındı cevabımı aşağıda görebilirsiniz
dang

Bunu hızlı bir şekilde programlı olarak nasıl yapabilirim? Sağda hizalama görüntüsü ve sol tarafta başlık istiyorum ???
Visal Sambo

36

Swift 3+ sürümünde:

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

Düğmenin içindeki tüm içerik konumunu değiştirmek istemiyorsanız, kullanmak emailBtn.titleEdgeInsetsdaha iyidir contentEdgeInsets.



7

xcode 8.2.1'de arayüz oluşturucusunda şu konuma taşınır:resim açıklamasını buraya girin


5

@DyingCactus kodunda küçük bir hata var. 'Başlık' düğmesini daha iyi kontrol etmek için düğme metnini hizalamak üzere bir UIB düğmesine bir UILabel eklemek için doğru çözüm:

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

Bu yardımcı olur umarım....

Al


2

Swift 2.0 için:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Gerekirse bu yardımcı olabilir.


2

In Swift 5.0 ve Xcode 10.2

Yaklaşımlar için iki yolunuz var

1) Doğrudan yaklaşım

btn.contentHorizontalAlignment = .left

2) SharedClass örneği (bir kez yazın ve her eşyayı kullanın)

Bu paylaşılan sınıfınız (bunun gibi tüm bileşen özelliklerine erişirsiniz)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

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

Sizin de ViewController böyle çağrısı

button.btnProperties()//This is your button

1

Deneyin

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
Bu benim için çalıştı, contentHorizontalAlignment işe yaramadı, teşekkürler.
danfordham
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.