Safe Area adalah panduan tata letak ( Safe Layout Guide ) .
Panduan tata letak mewakili bagian dari tampilan Anda yang tidak tertutup oleh bilah dan konten lainnya. Di iOS 11+, Apple mencela panduan tata letak atas dan bawah dan menggantinya dengan panduan tata letak area aman tunggal.
Saat tampilan terlihat di layar, panduan ini mencerminkan bagian tampilan yang tidak dicakup oleh konten lain. Area tampilan yang aman mencerminkan area yang dicakup oleh bilah navigasi, bilah tab, bilah alat, dan leluhur lainnya yang mengaburkan pandangan pengontrol tampilan. (Di tvOS, area aman menggunakan bezel layar, seperti yang didefinisikan oleh overscanCompensationInsets
properti UIScreen.) Ini juga mencakup ruang tambahan yang ditentukan oleh properti view controller additionalSafeAreaInsets
. Jika tampilan saat ini tidak diinstal dalam hierarki tampilan, atau belum terlihat di layar, panduan tata letak selalu cocok dengan tepi tampilan.
Untuk tampilan root pengontrol tampilan, area aman di properti ini mewakili seluruh bagian konten pengontrol tampilan yang dikaburkan, dan setiap inset tambahan yang Anda tentukan. Untuk tampilan lain dalam hierarki tampilan, area aman hanya mencerminkan bagian dari tampilan yang dikaburkan. Misalnya, jika tampilan sepenuhnya berada dalam area aman dari tampilan root pengontrol tampilan, inset tepi pada properti ini adalah 0.
Menurut Apple, Xcode 9 - Release note
Interface Builder menggunakan UIView.safeAreaLayoutGuide sebagai pengganti panduan tata letak Top dan Bottom yang sudah tidak digunakan lagi di UIViewController. Untuk menggunakan area aman baru, pilih Panduan Tata Letak Area Aman di inspektur File untuk pengontrol tampilan, dan kemudian tambahkan batasan antara konten Anda dan jangkar area aman baru. Ini mencegah konten Anda dari dikaburkan oleh bilah atas dan bawah, dan oleh wilayah overscan di tvOS. Batasan untuk area aman dikonversi ke Atas dan Bawah ketika menggunakan ke versi iOS sebelumnya.
Berikut ini adalah referensi sederhana sebagai perbandingan (untuk membuat efek visual yang serupa) antara Panduan Tata Letak (Atas & Bawah) yang ada dan Panduan Tata Letak Area Aman.
Tata Letak Area Aman:
AutoLayout
Bagaimana cara bekerja dengan Layout Area Aman?
Ikuti langkah-langkah ini untuk menemukan solusi:
- Aktifkan 'Tata Letak Area Aman', jika tidak diaktifkan.
- Hapus 'semua kendala' jika mereka menunjukkan koneksi dengan tampilan Super dan pasang kembali semua dengan jangkar tata letak yang aman. ATAU Klik dua kali pada kendala dan edit koneksi dari tampilan super ke jangkar SafeArea
Berikut ini contoh cuplikan, cara mengaktifkan tata letak area aman dan mengedit kendala.
Ini adalah hasil dari perubahan di atas
Desain Tata Letak dengan SafeArea
Saat merancang untuk iPhone X, Anda harus memastikan bahwa tata letak memenuhi layar dan tidak dikaburkan oleh sudut bundar perangkat, rumah sensor, atau indikator untuk mengakses layar Beranda.
Sebagian besar aplikasi yang menggunakan elemen UI standar yang disediakan sistem seperti bilah navigasi, tabel, dan koleksi secara otomatis beradaptasi dengan faktor bentuk baru perangkat. Bahan latar belakang meluas ke tepi layar dan elemen UI dipasang dengan benar dan diposisikan.
Untuk aplikasi dengan tata letak khusus, mendukung iPhone X juga harus relatif mudah, terutama jika aplikasi Anda menggunakan Tata Letak Otomatis dan mematuhi panduan tata letak area dan margin yang aman.
Berikut ini contoh kode (Ref dari: Safe Layout Guide ) :
Jika Anda membuat batasan dalam kode, gunakan properti safeAreaLayoutGuide di UIView untuk mendapatkan jangkar tata letak yang relevan. Mari kita buat kembali contoh Interface Builder di atas dalam kode untuk melihat tampilannya:
Dengan asumsi kami memiliki tampilan hijau sebagai properti di pengontrol tampilan kami:
private let greenView = UIView()
Kami mungkin memiliki fungsi untuk mengatur tampilan dan batasan yang dipanggil dari viewDidLoad:
private func setupView() {
greenView.translatesAutoresizingMaskIntoConstraints = false
greenView.backgroundColor = .green
view.addSubview(greenView)
}
Buat batasan margin depan dan belakang seperti biasa menggunakan layoutMarginsGuide dari tampilan root:
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
greenView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
greenView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
Sekarang kecuali Anda hanya menargetkan iOS 11, Anda perlu membungkus batasan panduan tata letak area aman dengan #available dan kembali ke panduan tata letak atas dan bawah untuk versi iOS sebelumnya:
if #available(iOS 11, *) {
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
greenView.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0),
guide.bottomAnchor.constraintEqualToSystemSpacingBelow(greenView.bottomAnchor, multiplier: 1.0)
])
} else {
let standardSpacing: CGFloat = 8.0
NSLayoutConstraint.activate([
greenView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing),
bottomLayoutGuide.topAnchor.constraint(equalTo: greenView.bottomAnchor, constant: standardSpacing)
])
}
Hasil:
Mengikuti UIView
ekstensi, buatlah mudah bagi Anda untuk bekerja dengan SafeAreaLayout secara terprogram.
extension UIView {
// Top Anchor
var safeAreaTopAnchor: NSLayoutYAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.topAnchor
} else {
return self.topAnchor
}
}
// Bottom Anchor
var safeAreaBottomAnchor: NSLayoutYAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.bottomAnchor
} else {
return self.bottomAnchor
}
}
// Left Anchor
var safeAreaLeftAnchor: NSLayoutXAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.leftAnchor
} else {
return self.leftAnchor
}
}
// Right Anchor
var safeAreaRightAnchor: NSLayoutXAxisAnchor {
if #available(iOS 11.0, *) {
return self.safeAreaLayoutGuide.rightAnchor
} else {
return self.rightAnchor
}
}
}
Berikut ini contoh kode dalam Objective-C :
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 Layout Area Aman