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.