Saya merasa ini adalah paradigma yang cukup umum untuk ditunjukkan / sembunyikan UIViews
, paling sering UILabels
, tergantung pada logika bisnis. Pertanyaan saya adalah, apa cara terbaik menggunakan AutoLayout untuk menanggapi tampilan tersembunyi seolah-olah bingkai mereka 0x0. Berikut adalah contoh daftar dinamis 1-3 fitur.
Saat ini saya memiliki ruang atas 10px dari tombol ke label terakhir, yang jelas tidak akan geser ke atas ketika label disembunyikan. Sampai sekarang saya membuat outlet untuk batasan ini dan memodifikasi konstanta tergantung pada berapa banyak label yang saya tampilkan. Ini jelas agak membingungkan karena saya menggunakan nilai konstan negatif untuk menekan tombol di atas frame tersembunyi. Ini juga buruk karena tidak dibatasi oleh elemen tata letak yang sebenarnya, hanya perhitungan statis yang licik berdasarkan ketinggian / padding elemen lainnya yang diketahui, dan jelas berjuang melawan untuk apa AutoLayout dibuat.
Saya jelas bisa saja membuat batasan baru tergantung pada label dinamis saya, tapi itu banyak manajemen mikro dan banyak kata-kata untuk mencoba hanya menghancurkan beberapa spasi putih. Apakah ada pendekatan yang lebih baik? Mengubah ukuran bingkai 0,0 dan membiarkan AutoLayout melakukan tugasnya tanpa manipulasi kendala? Menghapus tampilan sepenuhnya?
Jujur saja, hanya mengubah konstanta dari konteks tampilan tersembunyi memerlukan satu baris kode dengan perhitungan sederhana. Menciptakan kendala baru dengan constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
tampaknya begitu berat.
Sunting Feb 2018 : Lihat jawaban Ben dengan UIStackView
s