Bagaimana cara membuat pusat perataan teks UIButton? Menggunakan IB


139

Saya tidak dapat menetapkan judul UIButton menggunakan IB sebagai pusat. Judul saya adalah multi-line.
Memberi seperti ini
masukkan deskripsi gambar di sini

Tapi aku mau yang ini
masukkan deskripsi gambar di sini

Saya telah memberikan ruang dalam hal ini tetapi saya tidak ingin melakukan itu. Karena tidak selaras persis untuk beberapa kasus dan saya tahu ada properti UILabel untuk mengatur perataan tetapi saya tidak ingin menulis kode untuk itu .. hanya ingin mengatur semuanya dari IB.

Terima kasih


7
Kumar Rathor - coba dengan kodeself.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari

1
@Park Saya tahu bagaimana melakukan ini dengan kode tetapi yang saya inginkan adalah mengaturnya menggunakan 'IB'.
Inder Kumar Rathore

Saya tahu, Anda ingin mengaturnya menggunakan IB. Tetapi properti seperti itu hanya dapat diakses melalui kode.
Sagar R. Kothari

Ini dapat diakses melalui IB dengan membuatnya dikaitkan tetapi siapa yang peduli tentang itu!
Youssef Moawad

Jawaban:


197

Ini akan membuat persis apa yang Anda harapkan:

Tujuan-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

Untuk iOS 6 atau lebih tinggi

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

seperti yang dijelaskan dalam jawaban tyler53

Cepat:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x dan lebih tinggi

myButton.titleLabel?.textAlignment = .center

1
Ini telah menjadi NSTextAlignment di versi iOS selanjutnya.
Sullivan

4
kode ini tidak berfungsi, jawaban terbaik adalah @joetjahmyButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
Pertanyaannya secara eksplisit menyebutkan IB , seperti dalam Interface Builder . Ini bukan jawaban yang benar, karena membutuhkan pengkodean.
SwiftArchitect

1
Swift 4: myButton.titleLabel? .TextAlignment = .center
Lewis Black

'Center' telah diubah namanya menjadi 'center'
ModusPwnens

106

Gunakan garis:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

Ini harus memusatkan konten (horizontal).

Dan jika Anda ingin mengatur teks di dalam label ke tengah juga, gunakan:

[labelOne setTextAlignment:UITextAlignmentCenter];

Jika Anda ingin menggunakan IB, saya punya contoh kecil di sini yang terhubung di XCode 4 tetapi harus memberikan detail yang cukup (juga pikiran, di atas layar properti itu menunjukkan tab properti. Anda dapat menemukan tab yang sama di XCode 3.x): masukkan deskripsi gambar di sini


1
terima kasih ... tapi saya tidak ingin mengaturnya melalui IB. :( itulah pilihan terakhir saya untuk melakukan itu ...
Inder Kumar Rathore

1
@Inder Kumar Rathore: Tidak masalah. Untuk mengaturnya di IB, Anda harus mengklik label, lalu di Inspektur Atribut, atur Alignment ke "Center". Dalam IB saya (XCode 4), ia memiliki 3 ikon yang menunjukkan perataan teks. Jelas, Anda harus memilih yang di tengah itu.
Joetjah

dapatkah Anda mengirimkan tangkapan layar kepada saya ... Apakah ini label Tombol atau Anda telah menarik label UIL dari perpustakaan ??? Saya kira itu UILabel bukan label tombol
Inder Kumar Rathore

@Inder Kumar Rathore: Hai, lihat screenshot yang saya tambahkan. Saya memang salah mengira jenis label yang Anda gunakan, saya masih memikirkan UILabel alih-alih teks dalam UIButton. Tangkapan layar menunjukkan cara menyelaraskan pada UIButton melalui IB.
Joetjah

1
Tidak akan membiarkan saya mengedit, tetapi NSTextAlignmentCenter telah menggantikan UITextAlignmentCenter. Mereka berarti hal yang persis sama. developer.apple.com/library/iOS/documentation/UIKit/Reference/…
OC Rickard

89

Solusi1

Anda dapat mengatur jalur kunci di storyboard

Setel teks ke judul multiline Anda, misalnya hello + multiline

Anda perlu menekan + untuk memindahkan teks ke baris berikutnya.

masukkan deskripsi gambar di sini

Kemudian tambahkan jalur kunci

titleLabel.textAlignmentas Numberand value 1, 1berarti NSTextAlignmentCenter
titleLabel.numberOfLinesas Numberand value 0, 0berarti sejumlah garis

masukkan deskripsi gambar di sini

Ini tidak akan tercermin pada IB / Xcode, tetapi akan berada di tengah pada saat dijalankan (perangkat / simulator)

Jika Anda ingin melihat perubahan pada Xcode Anda perlu melakukan hal berikut: (ingat Anda dapat melewati langkah-langkah ini)

  1. Subkelas UIButton untuk membuat tombolnya dapat dirancang:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}

  2. Tetapkan subkelas yang dirancang untuk tombol-tombol yang Anda modifikasi:

Menampilkan cara mengubah kelas tombol menggunakan Interface Builder

  1. Jika dilakukan dengan benar, Anda akan melihat pembaruan visual dalam IB ketika status Designables "Up to date" (yang dapat memakan waktu beberapa detik):

Membandingkan tombol yang dirancang dan standar di Interface Builder



Solusi2

Jika Anda ingin menulis kode, maka lakukan proses panjang

1.Buat IBOutletuntuk tombol
2.Tulis kode dalam viewDidLoad

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


Solusi3

Dalam versi xcode yang lebih baru (milik saya adalah xcode 6.1) kami memiliki properti yang dikaitkan dengan judul.
Pilih Attributedkemudian pilih opsi teks dan tekan pusat di bawah ini.

PS Teks itu tidak datang multiline untuk itu saya harus mengatur

btn.titleLabel.numberOfLines = 0

masukkan deskripsi gambar di sini


Untuk solusi 3, Anda bisa menambahkan Line Breaking = Clip, itu akan mengubah teks menjadi multiline
finx

Solusi 3 memiliki masalah, setidaknya dengan Xcode 11.3.1: ketika saya mengubah judul tombol, itu tidak berfungsi. ketika saya menggunakan btn.titleLabel.textAlignment, itu bekerja dengan baik.
Brian Hong

27

Untuk UIButton Anda harus menggunakan: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

16

Untuk ios 8 dan Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

atau

btn.titleLabel.textAlignment = .Center


13

Bagi Anda yang sekarang menggunakan iOS 6 atau lebih tinggi, UITextAlignmentCenter telah ditinggalkan. Sekarang NSTextAlignmentCenter

CONTOH: mylabel.textAlignment = NSTextAlignmentCenter;Berfungsi sempurna.


12

Untuk swift 4, xcode 9

myButton.contentHorizontalAlignment = .center

Saya mengatur myButton.titleLabel? .NumberOfLines = 0 dan itu menyebabkan label di dalam tombol menjadi tengah, jadi saya mencoba mencari cara untuk menyelaraskan teks ke kiri di dalam tombol dan ini berhasil, mengaturnya ke .left.
Maksimum

7

Dengan asumsi bahwa btn merujuk pada UIButton, untuk mengubah teks multi-garis menjadi terpusat secara horizontal, Anda dapat menggunakan pernyataan berikut di iOS 6 atau yang lebih baru:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter sudah tidak digunakan lagi di iOS6

Sebagai gantinya, Anda dapat menggunakan kode ini:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


Tidak ada properti untuk UIButton callee textAlignment.
Ravi

Tidak ada properti untuk UIButton di iOS
Jayprakash Dubey

Dia berarti button.titleLabel.textAlignment
OC Rickard


4

Untuk Swift 4:

@IBAction func myButton(sender: AnyObject) {
    sender.titleLabel?.textAlignment = NSTextAlignment.center
    sender.setTitle("Some centered String", for:UIControlState.normal)
}

gunakan satu "?" di sender.titleLabel? sebagai gantinya "??"
Владимир Ковальчук

3

Sebenarnya Anda bisa melakukannya di pembangun antarmuka.

Anda harus mengatur Judul menjadi "Dikaitkan" dan kemudian pilih perataan tengah.


Jika dikaitkan, kita tidak dapat mengatur warna teks, font, dll melalui Storyboard.
Vineesh TP

3

Coba Seperti ini:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

2

Anda dapat melakukan ini dari storyboard. Pilih tombol Anda. Atur Line Break 'Word Wrap', Tetapkan judul Anda 'Plain' menjadi 'Attributed'. Pilih 'Perataan tengah'. Bagian ini penting => Klik ... (Lainnya) Tombol. Dan pilih mode line breaking ke 'Character Wrap'.


1

UIButton tidak akan mendukung setTextAlignment. Jadi, Anda harus pergi dengan setContentHorizontalAlignment untuk penyelarasan teks tombol

Untuk referensi Anda

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
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.