Saya telah menambahkan satu label di file ujung pena saya, lalu diperlukan perataan kiri atas untuk label itu. Karena saya menyediakan teks saat runtime jadi tidak yakin berapa banyak baris yang ada. Jadi jika teks hanya berisi satu baris, maka teks tersebut muncul sebagai rata tengah vertikal. Penjajaran itu tidak sesuai dengan label saya masing-masing di depannya.
Sebagai contoh:
Yang terlihat aneh :(
Apakah ada cara untuk menyetel teks label ke kanan atas perataan?
Jawaban:
Daripada menjelaskan ulang, saya akan menautkan ke pertanyaan / jawaban yang agak ekstensif & berperingkat tinggi ini:
Ratakan teks secara vertikal ke atas dalam UILabel
Jawaban singkatnya adalah tidak, Apple tidak membuat ini mudah, tetapi dimungkinkan dengan mengubah ukuran bingkai.
sumber
Ini cukup mudah dilakukan. Buat
UILabel
sublcass denganverticalAlignment
properti dan timpatextRectForBounds:limitedToNumberOfLines
untuk mengembalikan batas yang benar untuk perataan vertikal atas, tengah, atau bawah. Berikut kodenya:SOLabel.h
SOLabel.m
sumber
bounds.size.width
alih-alihrect.size.width
dalamtextRectForBounds:limitedToNumberOfLines:
tampaknya memperbaikinya.Saya menemukan solusi menggunakan AutoLayout di StoryBoard.
1) Atur tidak ada baris ke 0 dan perataan teks ke Kiri.
2) Tetapkan batasan tinggi.
3) Batasan tinggi harus dalam Relasi - Kurang Dari atau Sama
4)
Saya mendapatkan hasil sebagai berikut:
sumber
viewWillLayoutSubviews
di pengontrol atau file sel? Jika pengontrol, bagaimana cara mengakses UILabel dari sel?SOLabel bekerja untuk saya.
Swift 3 & 5:
Versi ini telah diperbarui dari aslinya untuk memungkinkan dukungan untuk bahasa RTL:
Cepat 1:
sumber
Dalam kasus saya, itu adalah
bottom space
masalah kendala. Saya telah mengaturnya ke= 16
.Ketika saya mengaturnya ke
bottom to >= 16
, masalah ini terpecahkan.Selain itu, jika Anda memiliki batasan ketinggian di label, Anda harus menghapusnya.
Berikut tampilan batasan label saya di size inspector:
sumber
Dalam kode Anda
Berhati-hatilah jika Anda menggunakannya dalam sel tabel atau tampilan lain yang didaur ulang dengan data berbeda, Anda harus menyimpan bingkai asli di suatu tempat dan menyetel ulang sebelum memanggil sizeToFit.
sumber
Saya menemukan solusi lain untuk masalah yang sama. Saya menggunakan
UITextView
alih-alihUILabel
dan beraliheditable()
fungsi kefalse
.sumber
Saya juga mengalami masalah ini tetapi yang saya temukan adalah urutan pengaturan properti dan metode UILabel yang penting!
Jika Anda menelepon
[label sizeToFit]
sebelumnyalabel.font = [UIFont fontWithName:@"Helvetica" size:14];
maka teks tidak sejajar dengan bagian atas tetapi jika Anda menukar mereka, maka itu benar!Saya juga memperhatikan bahwa mengatur teks terlebih dahulu membuat perbedaan juga.
Semoga ini membantu.
sumber
Saat Anda menggunakan pembuat antarmuka, setel batasan untuk label Anda (pastikan untuk menyetel tinggi dan lebar juga). Kemudian di Size Inspector, periksa tinggi untuk labelnya. Di sana Anda akan menginginkannya untuk membaca> = bukannya =. Kemudian dalam implementasi untuk pengontrol tampilan tersebut, setel jumlah baris ke 0 (juga dapat dilakukan di IB) dan setel label [label sizeToFit]; dan saat teks Anda bertambah panjang, label akan bertambah tinggi dan teks Anda tetap berada di kiri atas.
sumber
Jika yang Anda butuhkan adalah teks yang tidak dapat diedit yang secara default dimulai di sudut kiri atas Anda cukup menggunakan Tampilan Teks sebagai ganti label dan kemudian mengatur statusnya menjadi tidak dapat diedit, seperti ini:
Jauh lebih mudah daripada mengotak-atik label ...
Bersulang!
sumber
Solusi dengan SoLabel berhasil, Terima kasih.
Di bawah ini saya telah menambahkan versi monotouch:
sumber
Cara termudah dan termudah adalah dengan menyematkan Label di StackView dan mengatur Axis StackView ke Horizontal, Alignment to Top di Attribute Inspector dari Storyboard seperti yang ditunjukkan di sini .
sumber
Membangun di atas jawaban mengagumkan totiG, saya telah membuat kelas IBDesignable yang membuatnya sangat mudah untuk menyesuaikan perataan vertikal UILabel langsung dari StoryBoard. Pastikan Anda menyetel kelas UILabel Anda ke 'VerticalAlignLabel' dari inspektur identitas StoryBoard. Jika perataan vertikal tidak berpengaruh, buka Editor-> Segarkan Semua Tampilan yang seharusnya melakukan trik.
Cara kerjanya: Setelah Anda mengatur kelas UILabel Anda dengan benar, storyboard akan menampilkan bidang input yang mengambil integer (kode penyelarasan).
Pembaruan: Saya telah menambahkan dukungan untuk label terpusat ~ Sev
Masukkan 0 untuk Perataan Teratas
Masukkan 1 untuk Perataan Tengah
Masukkan 2 untuk Alignment Bawah
sumber
Anda juga dapat mengubah UILabel Anda menjadi UITextView, karena mereka pada dasarnya melakukan hal yang sama kecuali keuntungan dari UITextView adalah teks secara otomatis diratakan ke kiri atas
sumber
Saya memiliki masalah ini tetapi label saya ada di UITableViewCell, dan dengan dana itu cara termudah untuk menyelesaikan masalah adalah dengan membuat UIView kosong dan mengatur label di dalamnya dengan batasan ke atas dan ke sisi kiri saja, tanpa kutukan setel jumlah baris menjadi 0
sumber
Untuk iOS 7 itulah yang saya buat dan bekerja untuk saya
sumber
Swift 2.0 :: Menggunakan Ekstensi UILabel
Buat nilai enum konstan dalam file Swift yang kosong.
Menggunakan Ekstensi UILabel:
Buat kelas Swift kosong dan beri nama. Tambahkan yang berikut ini.
Penggunaan:
sumber
sampleLabel: UILabel?
?Jawaban @ totiG versi Swift 3
sumber
Jawaban @ totiG benar dan menyelesaikan masalah saya. Tetapi saya menemukan masalah saat menerapkan metode ini, di perangkat yang lebih kecil seperti 5s, SE, ini tidak berhasil untuk saya. Saya harus set
label.sizeToFit()
dioverride func layoutSubViews()
sumber
Cepat 5
Sederhana saja, urutan properti adalah segalanya.
sumber
Bagaimana cara mengatur perataan kiri atas untuk UILabel untuk aplikasi iOS? Label Setel Mode Konten ke "Kiri Atas" berfungsi untuk saya, terima kasih banyak:
sumber