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.