Saya Bekerja dengan autolayout dan kendala dan menemukan ada Constrain to margins
opsi di Xcode 6 yang tidak ada di Xcode 5 dan diperiksa secara default.
Saya membuat proyek uji kemudian saya menambahkan UITableView
pada ViewController dengan bingkai diatur ke ukuran yang sama dengan tampilan dan menambahkan kendala
Xcode 6 Anda dapat melihat di sini meskipun tableview memiliki bingkai yang sama dengan tampilan Xcode menyarankan untuk menambahkan -16 sebagai kendala sedangkan Xcode 5 akan menyarankan menambahkan spasi 0.
Sekarang ketika Anda hapus centang opsi "Batasi ke margin" itu berperilaku sama dengan Xcode 5 dan akan menyarankan menambahkan 0 sebagai kendala
Juga, saya menemukan bahwa setelah saya menambahkan batasan dengan Batasan ke margin diperiksa, saya tidak lagi dapat membuka file storyboard di Xcode 5 jadi itu pasti sesuatu yang baru di Xcode 6
Semoga saya bisa menjelaskan pertanyaan saya dengan benar. Saya ingin memahami apa yang sebenarnya "Kendala terhadap margin" dan kapan saya harus dan tidak boleh menggunakannya. Saya minta maaf jika itu sesuatu yang sangat sederhana dan jelas.
EDIT
Saya menemukan sesuatu tentang margin tata letak dalam diskusi di sini , saya ingin tahu apakah ini terkait dengan ini.
sumber
Jawaban:
Saya sama sekali tidak mengerti mengapa orang mengeluh bahwa " Margin akan menyebabkan crash langsung pada apa pun sebelum iOS 8. "
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 menyetelUIView.layoutMargins
properti dalam kode, yang hanya tersedia di iOS8, Anda dapat menyesuaikan nilai-nilai ini.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.
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:
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.
sumber
Di iOS 8 Anda sekarang memiliki opsi untuk menentukan batasan Anda relatif terhadap margin yang telah ditentukan untuk batas superview, bukan batas superview itu sendiri. Ya, ini benar-benar terkait dengan margin tata letak yang Anda tunjukkan dalam dokumen. Salah satu keuntungannya adalah Anda dapat mendefinisikan ulang margin Anda secara dinamis, atau berbeda untuk setiap jenis perangkat, dan tata letak akan diperbarui secara bersamaan tanpa mengubah kendala.
Kapan menggunakannya: kapan Anda ingin memanfaatkan fleksibilitas baru ini.
Kapan TIDAK menggunakannya: untuk aplikasi apa pun yang ditargetkan untuk berjalan di iOS 7 atau di bawah.
sumber
Properti di UIView adalah:
layoutMargins
. Lihat Apple Documents . Pada dasarnya jika margin tata letak adalah 8,8,8,8 (default), batasan dengan 0 margin ruang menuju wadah akan memiliki posisi x 8. Perhatikan bahwa ini hanya tersedia di iOS8 atau lebih baru.Untuk semua orang yang tidak ingin batasannya masuk ke margin kontainer:
CTRL + klik + seret untuk menampilkan munculan penciptaan kendala.
Jika menu menunjukkan untuk membuat batasan pada margin secara default, tahan opsi / alt untuk memungkinkan batasan dibuat pada kontainer dan bukan pada margin kontainer.
Sekarang akan muncul opsi untuk membuat batasan TIDAK ke margin. Ini CARA lebih cepat dalam penggunaan saya.
sumber