Bagaimana cara mengatur dua label UIL sehingga yang satu berukuran otomatis dan yang lainnya menggunakan ruang yang tersisa?

Saya memiliki dua label yang disusun secara horizontal di TableViewCell saya. Bagian kanan harus menggunakan ruang sebanyak yang dibutuhkan, sedangkan bagian kiri harus menggunakan ruang yang tersisa. Jika panjang kedua label lebih besar dari lebar sel, label kiri harus dipangkas sehingga label kanan memiliki cukup ruang untuk ditampilkan sepenuhnya. Label disejajarkan pada sisinya masing-masing, jika itu membuat perbedaan.

Opsi "Atur > Isi Kontainer Secara Vertikal" di bawah Inspektur Ukuran mirip dengan apa yang saya perlukan untuk label kiri, namun saya ingin itu hanya menempati ruang yang tidak dibutuhkan oleh label kanan.

Contoh

Jika saya menambahkan batasan pada spasi tambahan pada label kiri (lihat batasan ketiga di bawah), hasilnya hampir sesuai dengan yang saya perlukan, namun alih-alih label kanan diberi ruang yang diperlukan, label kiri mengambil ruang yang diperlukan (lihat gambar akhir).

Kendala

Contoh 2


person Nathan Van Dyken    schedule 05.04.2018    source sumber
comment
Anda dapat melakukannya secara terprogram dengan menambahkan label kanan terlebih dahulu dengan jangkar tambahan dan tanpa jangkar lebar (atau maksimal) (gunakan sizeToFit sehingga konten label menjadi lebar intrinsiknya) lalu menghitung lebarnya dalam layoutSubviews dan menggunakan lebar tersebut sebagai (negatif ) konstan untuk jangkar lebar label kiri. Dengan pendekatan terprogram, Anda dapat memperhitungkan kasus tepi terkait lebar label dan pemosisian ulang dengan lebih baik. Ini pada dasarnya adalah apa yang dilakukan kompresi dan pelukan API di belakang layar, tetapi saya lebih suka kontrol melakukannya secara manual karena tidak akan pernah ada kejutan apa pun.   -  person liquid    schedule 05.04.2018


Jawaban (2)


Saya pikir ini lebih mudah dari yang Anda duga...

Batasi "LeftLabel" di awal, batasi "RightLabel" di akhir, batasi Jarak Horizontal di antara keduanya hingga >= 8, lalu berikan "LeftLabel" Prioritas Ketahanan Kompresi Konten sebesar Low (250).

Hal ini memerintahkan tata letak otomatis untuk meluaskan setiap label berdasarkan konten teksnya, namun jika jarak di antara keduanya menjadi kurang dari 8, biarkan "Label Kanan" meluas ke teksnya, namun perluas "Label Kiri" hanya sampai ke titik yang sesuai 8 poin dari "Label Kanan".

masukkan deskripsi gambar di sini

Label Kiri dipilih:

masukkan deskripsi gambar di sini

Hasil:

masukkan deskripsi gambar di sini

person DonMag    schedule 05.04.2018

Sesuaikan prioritas pelukan konten dan prioritas ketahanan kompresi. Label kanan harus memiliki prioritas pelukan konten horizontal dan prioritas ketahanan kompresi konten yang lebih tinggi dibandingkan label kiri. Ini dikombinasikan dengan batasan berikut (ditulis dalam bahasa format visual) akan memberikan Anda efek yang diinginkan:

|-[leftLabel]-[rightLabel]-|

Jika teks pada label kanan terlalu panjang, hal ini dapat menyebabkan lebar label kiri menjadi 0. Tetapkan batasan lebar pada label kiri dengan >= lebar untuk mengatasi masalah tersebut.

person Sean Kladek    schedule 05.04.2018