Bagaimana cara mengatur judul UIButton sebagai perataan kiri?

472

Saya perlu menampilkan alamat email dari sisi kiri a UIButton, tetapi sedang diposisikan di tengah.

Apakah ada cara untuk mengatur perataan ke sisi kiri a UIButton?

Ini adalah kode saya saat ini:

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];
Madan Mohan
sumber

Jawaban:

1568

Tetapkan contentHorizontalAlignment:

emailBtn.contentHorizontalAlignment = .left;

Anda mungkin juga ingin menyesuaikan konten inset kiri jika tidak teks akan menyentuh perbatasan kiri:

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

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);
Ikat aku
sumber
44
Ingatlah bahwa Anda juga dapat mengatur kedua properti ini dari Interface Builder.
Mihai Damian
1
jadi itu nomor 9000 dari saya, thanx, jawaban yang berguna
Logika
6
Kami terlalu malas untuk mencari dokumentasi. Apa yang akan kita lakukan tanpa SO!
Kedar Paranjape
3
Pergi untuk menunjukkan SO lebih baik didokumentasikan daripada dokumen Apple.
GeneCode
1
UIControlContentHorizontalAlignmentLeadingdan UIControlContentHorizontalAlignmentTrailingditambahkan di iOS 11
Cal Stephens
118

Anda juga dapat menggunakan pembuat antarmuka jika Anda tidak ingin membuat penyesuaian dalam kode. Di sini saya meninggalkan menyelaraskan teks dan juga membuat beberapa indentasi:

UIButton dalam IB

Jangan lupa Anda juga dapat menyelaraskan gambar di tombol juga .:

masukkan deskripsi gambar di sini

n8tr
sumber
Ini membantu saya keluar satu ton, tidak percaya saya tidak menyadari bahwa itu adalah untuk kontrol apa.
Ethan Parker
Terima kasih, ini membantu saya. Saya tidak dapat menemukan insets tepi untuk judul tombol tanpa bantuan indikasi panah pada gambar sampel Anda.
Ashok
di xcode 8.2.1 pindah ke tempat lain lihat jawaban saya di bawah
dang
Bagaimana cara melakukannya secara cepat? Saya ingin menyelaraskan gambar di sebelah kanan, dan judul di sisi kiri ???
Visal Sambo
36

Dalam Swift 3+:

button.contentHorizontalAlignment = .left
Vincent
sumber
13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Bhavik
sumber
13

Swift 4+

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
Mohammad Zaid Pathan
sumber
9

Menggunakan emailBtn.titleEdgeInsetslebih baik daripada contentEdgeInsets, jika Anda tidak ingin mengubah seluruh posisi konten di dalam tombol.

Gabriel
sumber
7

di xcode 8.2.1 di pembuat antarmuka ia pindah ke:masukkan deskripsi gambar di sini

dang
sumber
5

Ada kesalahan kecil dalam kode @DyingCactus. Berikut ini adalah solusi yang tepat untuk menambahkan UILabel ke UIButton untuk menyelaraskan teks tombol untuk lebih mengontrol tombol 'judul':

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

Semoga ini membantu....

Al

Al-Noor Ladhani
sumber
2

Untuk Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Ini dapat membantu jika ada yang membutuhkan.

Suraj Sonawane
sumber
2

Di Swift 5.0 dan Xcode 10.2

Anda memiliki dua cara pendekatan

1) Pendekatan langsung

btn.contentHorizontalAlignment = .left

2) SharedClass Contoh (tulis sekali dan gunakan setiap perangkat)

Ini adalah kelas Anda bersama (seperti ini Anda mengakses semua properti komponen)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

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

Dalam panggilan ViewController Anda seperti ini

button.btnProperties()//This is your button
iOS
sumber
1

Mencoba

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
Gev
sumber
1
Ini bekerja untuk saya, contentHorizontalAlignment tidak, terima kasih.
danfordham