जब आपके पास एक जटिल दृश्य पदानुक्रम होता है, जैसे कई नेविगेशन नियंत्रक और / या टैब दृश्य नियंत्रक होने पर चीजें काफी गड़बड़ हो सकती हैं।
यह कार्यान्वयन इसे व्यक्तिगत दृश्य नियंत्रकों पर सेट करने के लिए डालता है, जब वे उप-परीक्षाओं के माध्यम से पुनरावृति करके उन्हें खोजने के लिए ऐप डेलिगेट पर भरोसा करने के बजाय, झुकाव को लॉक करना चाहते हैं।
स्विफ्ट 3, 4, 5
AppDelegate में:
/// set orientations you want to be allowed in this property by default
var orientationLock = UIInterfaceOrientationMask.all
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return self.orientationLock
}
कुछ अन्य वैश्विक संरचना या सहायक वर्ग में, यहाँ मैंने AppUtility बनाया:
struct AppUtility {
static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
if let delegate = UIApplication.shared.delegate as? AppDelegate {
delegate.orientationLock = orientation
}
}
/// OPTIONAL Added method to adjust lock and rotate to the desired orientation
static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {
self.lockOrientation(orientation)
UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
UINavigationController.attemptRotationToDeviceOrientation()
}
}
फिर इच्छित ViewController में आप झुकाव को लॉक करना चाहते हैं:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
AppUtility.lockOrientation(.portrait)
// Or to rotate and lock
// AppUtility.lockOrientation(.portrait, andRotateTo: .portrait)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Don't forget to reset when view is being removed
AppUtility.lockOrientation(.all)
}
अगर आईपैड या यूनिवर्सल ऐप
सुनिश्चित करें कि "पूर्ण स्क्रीन की आवश्यकता है" लक्ष्य सेटिंग्स में जाँच की जाती है -> सामान्य -> परिनियोजन जानकारी। supportedInterfaceOrientationsFor
अगर जाँच नहीं हुई तो प्रतिनिधि को नहीं बुलाया जाएगा।