Saya telah menghabiskan dua hari mencoba berbagai solusi untuk pendekatan Mixed and Pure Autolayout untuk mencapai apa yang merupakan pengaturan scrollview sepele sebelum autolayout, dan sekarang sudah resmi - saya pasti terlalu bodoh. Saya mengatur ini sebagian besar di Storyboard (well, begitulah adanya).
Jadi inilah permintaan saya untuk bantuan.
Viewtree:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
Tombol-tombol tersebut seharusnya bergulir secara horizontal (kiri ke kanan dan sebaliknya). Dapatkah seseorang tolong beri tahu saya cara mengatur batasan untuk mencapai ini menggunakan Autolayout murni ???
-
Saya telah mencoba pendekatan campuran, seperti:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... dan mengatur lebar tetap dan batasan tinggi untuk contentview
dan translatesAutoresizingMaskIntoConstraints
pengaturan sesuai TechNote Apple. Tombol dan scrollview diatur menggunakan batasan. Ini mendapat scrollview scrolling (yay) tapi sayangnya, itu scroll terlalu jauh! Sejauh yang saya tahu, lebar gulir entah bagaimana digandakan dari apa yang saya atur tampilan konten ??? !!! ???
Saya mencoba pendekatan autolayout murni juga, baik dengan contentview
dan tanpa. Semua tampilan translatesAutoresizingMaskIntoConstraints=NO
, kecuali untuk self.view
. Tombol-tombol memiliki batasan lebar / tinggi tetap, dan disematkan ke keempat tepi scrollview. Tidak ada yang bergulir.
Jadi saya benar-benar bingung mengapa saya tidak bisa membuatnya bekerja dengan benar. Bantuan apa pun sangat dihargai, dan jika Anda memerlukan info lain, silakan tanyakan!
Screenshot DIPERBARUI dengan solusi - kendala buttonZ:
EDIT @ Jamie Forrest Jadi solusinya ternyata menjadi trailing constraint yang salah pada tombol terakhir. Alih-alih 6441, nilai yang saya tetapkan adalah negatif, -6441. Yang sulit adalah, ketika mengatur nilai di storyboard, ada dua opsi di Pin toolbar:
Nilai Kanvas Saat Ini negatif (mengarah ke tidak ada gulir), dan opsi di bawah ini positif (mengaktifkan gulir). Ini berarti saya tidak bodoh tapi setidaknya setengah buta saya kira. Meskipun, untuk pertahanan saya, bukankah agak mengganggu bahwa XCode tidak menunjukkan kesalahan untuk pengaturan "salah"?
EDITED LAGI Sekarang ini lucu ... mengubah nilai trailing dari -6441 (tanpa scroll) menjadi 6441 scroll yang diaktifkan. Tetapi teman lama saya "terlalu banyak konten" kembali, mengarah ke ukuran konten dua kali lebih besar dari yang seharusnya! Solusi untuk mendapatkan gulir konten yang benar adalah dengan mengatur batasan trailing menjadi NOL! Ini tidak jelas ketika bekerja di Storyboard tetapi melihat kode @Infinity James, itu yang seharusnya.
contentSize
sebuah UIScrollView
tata letak auto hanya menggunakan. Dan itu contentSize
yang menentukan seberapa banyak Anda dapat menggulir. Jadi Anda harus mengatur ini secara manual di suatu tempat pada akhirnya. Untuk selebihnya, Anda dapat menggunakan batasan tata letak untuk mengatur bingkai tampilan relatif satu sama lain.