Karena saya tidak menggunakan papan cerita untuk membuat pandangan saya, saya bertanya-tanya apakah ada opsi "Gunakan Panduan Area Aman" secara terprogram atau semacamnya.
Saya telah mencoba untuk menambatkan pandangan saya ke
view.safeAreaLayoutGuide
tetapi mereka tetap tumpang tindih dengan kedudukan tertinggi di simulator iPhone X.
ios
swift
iphone-x
safearealayoutguide
Phillip
sumber
sumber
view.safeAreaInsets
? Apakah kamu sudah mencobanya?Jawaban:
Berikut ini contoh kode (Ref dari: Panduan Tata Letak Area Aman ):
Jika Anda membuat batasan dalam kode, gunakan properti safeAreaLayoutGuide UIView untuk mendapatkan jangkar tata letak yang relevan. Mari buat ulang contoh Interface Builder di atas dalam kode untuk melihat tampilannya:
Dengan asumsi kita memiliki tampilan hijau sebagai properti di pengontrol tampilan kita:
Kita mungkin memiliki fungsi untuk menyiapkan tampilan dan batasan yang dipanggil dari viewDidLoad:
Buat batasan margin depan dan belakang seperti biasa menggunakan layoutMarginsGuide dari tampilan root:
Sekarang, kecuali Anda menargetkan iOS 11 dan yang lebih baru, Anda harus membungkus batasan panduan tata letak area aman dengan #available dan kembali ke panduan tata letak atas dan bawah untuk versi iOS sebelumnya:
Hasil:
Berikut adalah Dokumentasi Resmi Pengembang Apple untuk Panduan Tata Letak Area Aman
Area Aman diperlukan untuk menangani desain antarmuka pengguna untuk iPhone-X. Berikut adalah pedoman dasar untuk Bagaimana merancang antarmuka pengguna untuk iPhone-X menggunakan Tata Letak Area Aman
sumber
Saya sebenarnya menggunakan ekstensi untuk itu dan mengontrol apakah ios 11 atau tidak.
sumber
self.safeAreaLayoutGuide
alih-alihself.layoutMarginsGuide
. Yang aman yang digunakan dalam jawaban ini bekerja dengan benar agar saya tetap berada di area aman! Satu hal yang saya sarankan untuk diubah adalah menggunakanleadingAnchor
dantrailingAnchor
bukannyaleftAnchor
danrightAnchor
. Bravo!SafeAreaLayoutGuide
adalahUIView
properti,Gunakan
safeAreaLayoutGuide
untuk menghindari objek kami terpotong / tumpang tindih dari sudut membulat, bilah navigasi, bilah tab, bilah alat, dan tampilan leluhur lainnya.Kita dapat membuat
safeAreaLayoutGuide
objek & mengatur batasan objek masing-masing.Batasan untuk Potret + Lanskap adalah -
UILayoutGuide
safeAreaLayoutGuide
sumber
viewDidAppear
, kecuali Anda benar-benar tahu apa yang Anda lakukan.viewDidAppear
dipanggil beberapa kali dan karenanya, batasan Anda akan diduplikasi setiap kali dipanggil.Bagi Anda yang menggunakan SnapKit , sama seperti saya, solusinya adalah menambatkan kendala Anda untuk
view.safeAreaLayoutGuide
menyukai:sumber
Saya menggunakan ini alih-alih menambahkan batasan margin depan dan belakang ke layoutMarginsGuide:
Silakan juga periksa opsi untuk versi lebih rendah dari ios 11 dari jawaban Krunal.
sumber
Gunakan
UIWindow
atauUIView
'ssafeAreaInsets
.bottom
.top
.left
.right
sumber
Gunakan batasan dengan format visual dan Anda mendapatkan rasa hormat untuk area aman secara gratis.
sumber
Perluasan area aman Untuk Objective-C
sumber
Swift 4.2 dan 5.0. Misalkan Anda ingin menambahkan batasan Leading, Trailing, Top dan Bottom pada viewBg. Jadi, Anda dapat menggunakan kode di bawah ini.
sumber
Ekstensi ini membantu Anda membatasi UIVIew ke superview dan superview + safeArea-nya:
sumber
Anda dapat menggunakan view.safeAreaInsets seperti yang dijelaskan di sini https://www.raywenderlich.com/174078/auto-layout-visual-format-language-tutorial-2
contoh kode (diambil dari raywenderlich.com):
sumber