सेफ एरिया एक लेआउट गाइड ( सेफ एरिया लेआउट गाइड ) है ।
लेआउट मार्गदर्शिका आपके विचार के उस हिस्से का प्रतिनिधित्व करती है जो बार और अन्य सामग्री द्वारा अनबॉस्स्ड है। IOS 11+ में, Apple शीर्ष और निचले लेआउट गाइडों को हटा रहा है और उन्हें एक ही सुरक्षित क्षेत्र लेआउट गाइड के साथ बदल रहा है।
जब दृश्य ऑनस्क्रीन दिखाई देता है, तो यह मार्गदर्शिका दृश्य के उस हिस्से को दर्शाती है जो अन्य सामग्री द्वारा कवर नहीं किया गया है। किसी दृश्य का सुरक्षित क्षेत्र नेविगेशन बार, टैब बार, टूलबार और अन्य पूर्वजों द्वारा कवर किए गए क्षेत्र को दर्शाता है जो एक दृश्य नियंत्रक के दृश्य को अस्पष्ट करते हैं। (टीवीओएस में, सुरक्षित क्षेत्र स्क्रीन के बेज़ेल को शामिल करता है, जैसा कि overscanCompensationInsets
यूआईस्क्रीन की संपत्ति द्वारा परिभाषित किया गया है ।) यह व्यू कंट्रोलर की additionalSafeAreaInsets
संपत्ति द्वारा परिभाषित किसी भी अतिरिक्त स्थान को भी कवर करता है। यदि दृश्य वर्तमान में दृश्य पदानुक्रम में स्थापित नहीं है, या अभी तक ऑनस्क्रीन दिखाई नहीं दे रहा है, तो लेआउट गाइड हमेशा दृश्य के किनारों से मेल खाता है।
कंट्रोलर के मूल दृश्य के लिए, इस गुण में सुरक्षित क्षेत्र दृश्य नियंत्रक की सामग्री के पूरे भाग का प्रतिनिधित्व करता है जो अस्पष्ट है, और आपके द्वारा निर्दिष्ट कोई अतिरिक्त इनसेट्स। दृश्य पदानुक्रम में अन्य विचारों के लिए, सुरक्षित क्षेत्र केवल उस दृश्य के हिस्से को दर्शाता है जो अस्पष्ट है। उदाहरण के लिए, यदि कोई दृश्य पूरी तरह से अपने दृश्य नियंत्रक के मूल दृश्य के सुरक्षित क्षेत्र के भीतर है, तो इस संपत्ति में किनारे वाले इंसर्ट 0 हैं।
Apple के अनुसार, Xcode 9 - रिलीज़ नोट
इंटरफ़ेस बिल्डर UIViewController में पदावनत शीर्ष और निचला लेआउट गाइड के प्रतिस्थापन के रूप में UIView.safeAreaLayoutGuide का उपयोग करता है। नए सुरक्षित क्षेत्र का उपयोग करने के लिए, दृश्य नियंत्रक के लिए फ़ाइल निरीक्षक में सुरक्षित क्षेत्र लेआउट मार्गदर्शिकाएँ चुनें और फिर अपनी सामग्री और नए सुरक्षित क्षेत्र लंगर के बीच बाधाओं को जोड़ें। यह आपकी सामग्री को ऊपर और नीचे की सलाखों से और टीवीओएस पर ओवरस्कैन क्षेत्र द्वारा अस्पष्ट होने से बचाता है। आईओएस के पुराने संस्करणों में तैनात होने पर सुरक्षित क्षेत्र की बाधाएं टॉप और बॉटम में बदल जाती हैं।
मौजूदा (टॉप एंड बॉटम) लेआउट गाइड और सेफ एरिया लेआउट गाइड के बीच तुलना (समान दृश्य प्रभाव बनाने के लिए) के रूप में यहां सरल संदर्भ है।
सुरक्षित क्षेत्र लेआउट:
autolayout
सुरक्षित क्षेत्र लेआउट के साथ कैसे काम करें?
समाधान खोजने के लिए इन चरणों का पालन करें:
- सक्षम नहीं होने पर 'सुरक्षित क्षेत्र लेआउट' को सक्षम करें।
- यदि वे सुपर व्यू के साथ संबंध दिखाते हैं और सभी को सुरक्षित लेआउट एंकर के साथ फिर से जोड़ते हैं, तो 'सभी बाधा' निकालें । या एक बाधा पर डबल क्लिक करें और सुपर व्यू से SafeArea लंगर के लिए कनेक्शन संपादित करें
यहाँ नमूना स्नैपशॉट है, कैसे सुरक्षित क्षेत्र लेआउट को सक्षम करें और बाधा को संपादित करें।
यहाँ उपरोक्त परिवर्तनों का परिणाम है
SafeArea के साथ लेआउट डिज़ाइन
जब iPhone X के लिए डिज़ाइन किया जाता है , तो आपको यह सुनिश्चित करना होगा कि लेआउट स्क्रीन को भर दें और डिवाइस के गोल कोनों, सेंसर हाउसिंग या होम स्क्रीन तक पहुँचने के लिए संकेतक द्वारा अस्पष्ट न हों।
अधिकांश एप्लिकेशन जो मानक, सिस्टम-प्रदान किए गए यूआई तत्वों जैसे नेविगेशन बार, टेबल और संग्रह का उपयोग करते हैं, स्वचालित रूप से डिवाइस के नए फॉर्म फैक्टर के अनुकूल होते हैं। पृष्ठभूमि सामग्री प्रदर्शन के किनारों तक फैली हुई है और यूआई तत्व उचित रूप से इनसेट और तैनात हैं।
कस्टम लेआउट वाले ऐप्स के लिए, iPhone X का समर्थन करना अपेक्षाकृत आसान होना चाहिए, खासकर यदि आपका ऐप ऑटो लेआउट का उपयोग करता है और सुरक्षित क्षेत्र और मार्जिन लेआउट गाइड का पालन करता है।
यहाँ नमूना कोड है (Ref: सेफ़ एरिया लेआउट गाइड ) :
यदि आप कोड में अपनी बाधाएँ बनाते हैं तो संबंधित लेआउट एंकर प्राप्त करने के लिए UIVIV की सुरक्षित संपत्ति का उपयोग करें। आइए कोड में उपरोक्त इंटरफ़ेस बिल्डर उदाहरण को फिर से बनाएँ, यह देखने के लिए कि यह कैसा दिखता है:
मान लें कि हमारे पास हमारे दृश्य नियंत्रक में एक संपत्ति के रूप में हरा दृश्य है:
private let greenView = UIView()
हमारे पास व्यूडलडड से कहे जाने वाले विचारों और बाधाओं को स्थापित करने के लिए एक समारोह हो सकता है:
private func setupView() {
greenView.translatesAutoresizingMaskIntoConstraints = false
greenView.backgroundColor = .green
view.addSubview(greenView)
}
हमेशा रूट दृश्य के लेआउटमार्गेगाइड का उपयोग करते हुए अग्रणी और अनुगामी मार्जिन बाधाओं को बनाएं:
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
greenView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
greenView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
अब जब तक आप iOS 11 को लक्षित नहीं कर रहे हैं, तब तक आपको केवल # iOS के साथ सुरक्षित क्षेत्र लेआउट गाइड बाधाओं को लपेटने और पिछले iOS संस्करणों के लिए ऊपर और नीचे लेआउट गाइडों पर गिरने की आवश्यकता होगी:
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)
])
}
परिणाम:
UIView
विस्तार के बाद , सुरक्षित रूप से सुरक्षित रूप से प्रोग्राम के साथ काम करना आपके लिए आसान हो जाता है।
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
}
}
}
यहाँ उद्देश्य-सी में नमूना कोड है :
यहाँ सुरक्षित क्षेत्र लेआउट गाइड के लिए Apple डेवलपर आधिकारिक दस्तावेज है
IPhone-X के लिए उपयोगकर्ता इंटरफ़ेस डिज़ाइन को संभालने के लिए सुरक्षित क्षेत्र आवश्यक है। सुरक्षित क्षेत्र लेआउट का उपयोग करके iPhone-X के लिए उपयोगकर्ता इंटरफ़ेस कैसे डिज़ाइन करें, इसके लिए बुनियादी दिशानिर्देश है