2012-02-17 8 views
29

Sorun:
hala ortalanan bir düğmenin titleEdgeInset ve UITextAlignmentLeft düğmenin başlığı ayarladıktan sonra, sola hizalı değil.UITextAlignmentLeft ile ortadaki metnin IOS'lu iOS UIButton'u?

Detayları:
Ben geniş solda bir görüntü ile özel bir arka plan kullanarak bir düğme 200px var. Görüntüyü kapatmak için düğme başlığını istemediğimden, başlığı titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0); kullanarak ekledim. Bu, başlık etiketinin x pozisyonunun 45px'de başlamasını ve 200px'de bitmesini sağlamalıdır. Düğmenin başlığının resme sola hizalanmasını da istiyorum, bu yüzden textAlignment = UITextAlignmentLeft'u da ayarladım. Ancak başlık metni hala 45px ile 200px arasında ortalanmış, sola hizalanmamış.

Neden?

button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0); 
button.titleLabel.textAlignment = UITextAlignmentLeft; 
[button setTitle:@"X"]; 

cevap

80

Testim kodu: Ben button.contentHorizontalAlignment değil button.titleLabel.textAlignment set

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(20, 20, 200, 72); 
UIImage *image = [UIImage imageNamed:@"rob.png"]; 
[button setImage:image forState:UIControlStateNormal]; 
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
[button setTitle:@"Hello" forState:UIControlStateNormal]; 
button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0); 
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
[self.view addSubview:button]; 

Not. Benim Sonuç: düğme için

Screen shot of label

4

titleLabel üzerinde bir arka plan rengi koyun:

İlgili kod İşte. Bahse girerim sığacak kadar büyüktür, bu yüzden metin hizalaması önemli değildir. Sadece olması gerektiği kadar uzun. Düzeltmeniz gereken şey, etiketin kendisinin pozisyonudur. Doğrulamak için UIButton'u genişletmeniz ve layoutSubviews'ı geçersiz kılmak zorunda kalabilirsiniz. Hiç bir şey, ancak ortalanmış bir etiket olan bir düğme görmedim.

22

seti contentHorizontalAlignment özelliği, işe yarayacak.

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
bir düğme için
2

Seti contentHorizontalAlignment özelliği:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
0

Sadece düğmenin ayarlayıcı geçersiz kılmak ve setter contentHorizontalAlignment özelliğini ayarlamaya:

-(UIButton *)yourButton { 
     [_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft]; 

    return _yourButton; 
} 
1

Swift 3

İçeriği ayarla HorizontalAlignment özelliği işi yapar. Teşekkürler

yourButton.contentHorizontalAlignment = .left 
İlgili konular