Saya sama sekali tidak mengerti mengapa orang mengeluh bahwa " Margin akan menyebabkan crash langsung pada apa pun sebelum iOS 8. "
Mengatur kendala Anda relatif terhadap margin dalam file xib atau storyboard TIDAK membuat aplikasi Anda rusak di iOS7, dan itu TIDAK membuat perbedaan UI pada perangkat iOS7 Anda, selama Anda tidak menyentuh UIView.layoutMargins
dan UIView.preservesSuperviewLayoutMargins
properti dalam kode Anda.
Apa itu Margin di iOS8
Margin tata letak mewakili bantalan di sekitar bagian dalam UIView
yang dapat digunakan sistem tata letak saat meletakkan subview - untuk memastikan bahwa ada celah yang tersisa antara tepi tampilan dan subview. Dalam hal ini sangat mirip dengan properti padding yang terkait dengan blok di CSS.
Secara default, UIView
tata letak memiliki margin 8 poin di setiap sisi, dan ini tidak dapat diubah Interface Builder . Namun, dengan menyetel UIView.layoutMargins
properti dalam kode, yang hanya tersedia di iOS8, Anda dapat menyesuaikan nilai-nilai ini.
Anda bisa meminta IB untuk menampilkan margin Editor> Canvas> Show Layout Rectangles:
Margin dapat digunakan untuk membantu mengatur tampilan dan subview Anda. Setiap UIView
datang dengan margin secara default, tetapi mereka hanya mempengaruhi penempatan tampilan ketika Anda menetapkan batasan yang terkait dengan margin.
Cara menggunakan Margin
Satu-satunya cara untuk menggunakan margin di Interface Builder adalah dengan memeriksa opsi Relative to margin sambil mengkonfigurasi kendala Anda. Ini adalah bagaimana Anda mengarahkan kendala Anda untuk Menggunakan margin, bukan tepi saat meletakkan pandangan saya.
Mari kita lihat empat cara berbeda untuk menetapkan batasan utama antara tampilan dan subview-nya. Untuk setiap kendala yang kami ulas, asosiasi pertama yang dijelaskan akan memimpin subview , dan yang kedua akan memimpin superview . Yang ingin Anda perhatikan dengan cermat adalah status cek dan hapus centang dari Relatif terhadap margin dari setiap akhir kendala, karena itu menentukan apakah kendala terkait dengan margin atau tepi tampilan.
- Item pertama (hapus centang), item kedua (centang): Dalam hal ini, kami menyatakan bahwa tepi kiri subview harus sejajar dengan margin kiri superview (seperti yang ditunjukkan pada gambar ini).
- Item pertama (hapus centang), item kedua (hapus centang): Keduanya menggunakan edge, bukan margin . Dalam hal ini, kami menyatakan bahwa tepi kiri subview harus sejajar dengan tepi kiri superview.
- Item pertama (centang), item kedua (hapus centang): Dalam hal ini, kami menyatakan bahwa margin kiri subview harus sejajar dengan tepi kiri superview. Layout semacam ini sebenarnya membuat subview tumpang tindih dengan superview.
- Item pertama (centang), item kedua (centang). Ini sebenarnya memiliki efek yang sama dengan kasus 2, karena baik subview dan superview memiliki margin default yang sama. Kami menyatakan bahwa margin kiri subview harus sejajar dengan margin kiri superview.
Apa yang baik tentang Margin
Fitur baru ini (iOS8) hanya berdampak pada pengembangan UI jika Anda memutuskan untuk menggunakan margin.
Dengan menggunakan margin, Anda dapat menyesuaikan penempatan beberapa tayangan ganda yang berbagi hubungan umum ke superview bersama dengan mengubah nilai satu properti. Ini adalah kemenangan yang jelas atas pengaturan semua kendala terkait dengan nilai-nilai tetap, karena jika Anda perlu memperbarui semua spasi, alih-alih mengubah setiap nilai satu per satu, Anda dapat secara bersamaan memodifikasi semua penempatan yang relevan dengan memperbarui margin superview dengan satu baris tunggal kode seperti ini:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
Untuk mengilustrasikan manfaat ini, dalam kasus berikut semua tepi kiri subview disejajarkan dengan margin kiri superview mereka. Dengan demikian, mengubah margin kiri superview akan memengaruhi semua subview secara bersamaan.