Rekan-rekan pengembang, saya mengalami masalah dengan AutoLayout di Interface Builder (Xcode 5 / iOS 7). Ini sangat mendasar dan penting, jadi saya pikir semua orang harus tahu cara kerjanya dengan benar. Jika ini adalah bug di Xcode, itu adalah bug yang kritis!
Jadi, setiap kali saya memiliki hierarki tampilan seperti ini, saya mengalami masalah:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView memiliki kendala solid, misalnya, 50 px dari setiap sisi (tidak ada masalah). Kemudian saya menambahkan batasan Space Top ke label UIL (tidak ada masalah) (dan saya bahkan dapat menyematkan tinggi / lebar label, tidak mengubah apa pun, tetapi harus tidak perlu karena ukuran intrinsik Label)
Masalahnya dimulai ketika saya menambahkan batasan trailing ke UILabel:
Misalnya, Trailing Space ke: Superview Equals: 25
Sekarang dua peringatan terjadi - dan saya tidak mengerti mengapa:
A) Ambiguitas Ukuran Konten yang Dapat Digulir (Scroll View memiliki tinggi / lebar konten yang dapat digulir)
B) Tampilan salah tempat (Label Diharapkan: x = -67 Sebenarnya: x = 207
Saya melakukan contoh minimal ini dalam proyek baru yang dapat Anda unduh dan saya lampirkan tangkapan layar. Seperti yang dapat Anda lihat, Interface Builder mengharapkan Label untuk duduk di luar batas UIScrollView (persegi panjang berwarna oranye). Memperbarui bingkai Label dengan Resolve Issues Tool memindahkannya ke sana.
Harap dicatat: Jika Anda mengganti UIScrollView dengan UIView, perilaku seperti yang diharapkan (bingkai Label sudah benar dan sesuai dengan kendala). Jadi sepertinya ada masalah dengan UIScrollView atau saya kehilangan sesuatu yang penting.
Ketika saya menjalankan Aplikasi tanpa memperbarui bingkai Label seperti yang disarankan oleh IB, itu diposisikan dengan baik, tepat di tempat seharusnya dan UIScrollView dapat digulir. Jika saya DO memperbarui bingkai Label tidak terlihat dan UIScrollView tidak menggulir.
Bantu aku Obi-Wan Kenobi! Mengapa tata letak ambigu? Mengapa tampilan salah tempat?
Anda dapat mengunduh proyek sampel di sini dan mencoba jika Anda dapat mengetahui apa yang terjadi: https://github.com/Wirsing84/AutoLayoutProblem
UIScrollView
secara langsung. Alih-alih menggunakan UICollectionView
atau UITableView
sebanyak mungkin, kebanyakan setiap hal adalah mungkin dengan elemen ini dan juga memberikan kesederhanaan, keterbacaan dan penggunaan kembali !!!