Ev ডিভাইস ওরিয়েন্টেশন! = ইন্টারফেস ওরিয়েন্টেশন ⚠️
সুইফট 5. * আইওএস 14 এবং নীচে
আপনার মধ্যে সত্যই পার্থক্য করা উচিত:
- ডিভাইস ওরিয়েন্টেশন => দৈহিক ডিভাইসের ওরিয়েন্টেশন নির্দেশ করে
- ইন্টারফেস ওরিয়েন্টেশন => স্ক্রিনে প্রদর্শিত ইন্টারফেসের ওরিয়েন্টেশন নির্দেশ করে
এমন অনেকগুলি পরিস্থিতি রয়েছে যেখানে এই 2 টি মান মিলছে না যেমন:
- আপনি যখন আপনার স্ক্রিন ওরিয়েন্টেশন লক করবেন
- যখন আপনার ডিভাইস সমতল হবে
বেশিরভাগ ক্ষেত্রে আপনি ইন্টারফেস অরিয়েন্টেশন ব্যবহার করতে চান এবং আপনি এটি উইন্ডো দিয়ে পেতে পারেন:
private var windowInterfaceOrientation: UIInterfaceOrientation? {
return UIApplication.shared.windows.first?.windowScene?.interfaceOrientation
}
আপনি যদি <আইওএস 13 (যেমন আইওএস 12) সমর্থন করতে চান তবে আপনি নিম্নলিখিতগুলি করতে পারেন:
private var windowInterfaceOrientation: UIInterfaceOrientation? {
if #available(iOS 13.0, *) {
return UIApplication.shared.windows.first?.windowScene?.interfaceOrientation
} else {
return UIApplication.shared.statusBarOrientation
}
}
এখন আপনাকে উইন্ডো ইন্টারফেস ওরিয়েন্টেশন পরিবর্তনের ক্ষেত্রে কোথায় প্রতিক্রিয়া জানাতে হবে তা নির্ধারণ করতে হবে। এটি করার একাধিক উপায় রয়েছে তবে সর্বোত্তম সমাধানটি এর মধ্যে এটি করা
willTransition(to newCollection: UITraitCollection।
এই উত্তরাধিকার সূত্রে প্রাপ্ত ইউআইভিউউকন্ট্রোলার পদ্ধতিটি যা ওভাররাইড করা যায় তা প্রতিবার ইন্টারফেসের ওরিয়েন্টেশন পরিবর্তন হওয়ার সাথে সাথে ট্রিগার হবে। ফলস্বরূপ আপনি পরে সমস্ত পরিবর্তন করতে পারেন do
এখানে একটি সমাধান উদাহরণ:
class ViewController: UIViewController {
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
super.willTransition(to: newCollection, with: coordinator)
coordinator.animate(alongsideTransition: { (context) in
guard let windowInterfaceOrientation = self.windowInterfaceOrientation else { return }
if windowInterfaceOrientation.isLandscape {
} else {
}
})
}
private var windowInterfaceOrientation: UIInterfaceOrientation? {
return UIApplication.shared.windows.first?.windowScene?.interfaceOrientation
}
}
এই পদ্ধতিটি প্রয়োগ করে আপনি তারপরে আপনার ইন্টারফেসের দিকনির্দেশের যে কোনও পরিবর্তনের বিষয়ে প্রতিক্রিয়া জানাতে সক্ষম হবেন। তবে মনে রাখবেন অ্যাপটি খোলার সময় এটিকে ট্রিগার করা হবে না যাতে আপনার নিজের ইন্টারফেসটি ম্যানুয়ালি আপডেট করতে হবে viewWillAppear()।
আমি একটি নমুনা প্রকল্প তৈরি করেছি যা ডিভাইস ওরিয়েন্টেশন এবং ইন্টারফেস অভিমুখীকরণের মধ্যে পার্থক্যকে আন্ডারলাইন করে। অতিরিক্তভাবে এটি আপনাকে আপনার ইউআই আপডেট করার সিদ্ধান্ত নিয়েছে তার উপর নির্ভর করে পৃথক আচরণ বুঝতে আপনাকে সহায়তা করবে।
নিখরচায় নিখরচায় নিম্নলিখিত সংগ্রহস্থলটি চালনা করুন:
https://github.com/wjosset/ReactToOrientation