2017-10-11 15 views
6

पर सुरक्षित क्षेत्र इंसेट का पता लगाएं मैं आईफोन एक्स का समर्थन करने के लिए एक ऐप अनुकूलित कर रहा हूं। मेरे पास कस्टम व्यू कंट्रोलर के साथ एक शेयर एक्सटेंशन है। मुझे अपने डिवाइस के सुरक्षित क्षेत्र के इन्सेट्स को जानने की ज़रूरत है, लेकिन UIWindow से UIApplication.shared.keyWindow पर कॉल करके प्रदान की गई शेयर एक्सटेंशन एक्सटेंशन में उपलब्ध नहीं है क्योंकि UIApplication.shared वहां दिखाई नहीं दे रहा है। क्या मेरे शेयर एक्सटेंशन में safeAreaInsets संपत्ति से मूल्यों को जानने का कोई तरीका है?शेयर एक्सटेंशन

उत्तर

1

safeAreaInsets किसी भी UIView पर एक संपत्ति है; आप इसे अपने शेयर एक्सटेंशन में उपयोग कर सकते हैं। आपको सुरक्षित एरियाइन्ससेट के लिए UIApplication.shared.keyWindow से पूछने की आवश्यकता नहीं है - असल में, आप शायद ऐसा नहीं करना चाहते हैं, क्योंकि यदि कुंजीविंडो में UINavigationController या UITabBarController है, तो वे सुरक्षित एरियाइन्स को प्रभावित करेंगे।

आप कोई दृश्य आपके UIView पदानुक्रम में गहरी है, तो इसकी safeAreaInsets पदानुक्रम में पूर्वज विचारों को देखते हुए, और अगर उनमें से किसी safeAreaInsets कि आपके विचार को ओवरलैप कर देखकर गणना कर रहे हैं।

public override func safeAreaInsetsDidChange() { 
    if #available(iOS 11.0, *) { 
     super.safeAreaInsetsDidChange() 
     self.setNeedsUpdateConstraints() // or self.setNeedsLayout, etc. 
    } 
} 
: -

आप पा सकते हैं, हालांकि, कि safeAreaInsets हैं शुरू में UIEdgeInsets.zero कि आप क्या करना चाहते हैं UIView.safeAreaInsetsDidChange() या UIViewController.viewSafeAreaInsetsDidChange() लागू, की तरह तो है

संबंधित मुद्दे