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

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

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


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

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

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



7

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


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


2

Untuk Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Ini dapat membantu jika ada yang membutuhkan.


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

1

Mencoba

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
Ini bekerja untuk saya, contentHorizontalAlignment tidak, terima kasih.
danfordham
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.