যখন আপনার কাছে একাধিক নেভিগেশন কন্ট্রোলার এবং / বা ট্যাব দেখার নিয়ন্ত্রক থাকার মতো জটিল ভিউ হায়ারার্কি থাকে তখন জিনিসগুলি বেশ অগোছালো হয়ে উঠতে পারে।
এই বাস্তবায়নটি পৃথক দর্শন নিয়ন্ত্রকদের উপর সেট করে রাখে যে তারা কখন ওরিয়েন্টেশন লক করতে চাইবে, অ্যাপ ডেলিগেটের উপর নির্ভর না করে সাবভিউগুলির মাধ্যমে পুনরাবৃত্তি করে তাদের সন্ধান করতে পারে।
সুইফট 3, 4, 5
অ্যাপডিজিটে:
var orientationLock = UIInterfaceOrientationMask.all
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return self.orientationLock
}
অন্য কয়েকটি গ্লোবাল স্ট্রাক্ট বা সহায়তা সহায়ক শ্রেণিতে, আমি এখানে অ্যাপ্লিকেশন তৈরি করেছি:
struct AppUtility {
static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
if let delegate = UIApplication.shared.delegate as? AppDelegate {
delegate.orientationLock = orientation
}
}
static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {
self.lockOrientation(orientation)
UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
UINavigationController.attemptRotationToDeviceOrientation()
}
}
তারপরে কাঙ্ক্ষিত ভিউকন্ট্রোলারে আপনি ওরিয়েন্টেশনগুলি লক করতে চান:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
AppUtility.lockOrientation(.portrait)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
AppUtility.lockOrientation(.all)
}
যদি আইপ্যাড বা ইউনিভার্সাল অ্যাপ হয়
নিশ্চিত করুন যে "পূর্ণ স্ক্রিনের প্রয়োজন" টার্গেট সেটিংস -> সাধারণ -> স্থাপনার তথ্যতে পরীক্ষা করা হয়েছে। supportedInterfaceOrientationsFor
যদি এটি পরীক্ষা না করা হয় তবে ডেলিগেটকে ফোন করা হবে না।