عند تغيير وجهات نظر UiWindow ، لم يتم تعيين الاتجاه
-
03-10-2019 - |
سؤال
إذا تمت إضافة عرض إلى النافذة ، يتم تعيين الاتجاه كصورة حتى لو كان الجهاز في المناظر الطبيعية. إذا تمت إضافة العرض في مندوب التطبيق ، التطبيق: didFinishLaunchingWithOptions: الطريقة ، فهو يعمل بشكل صحيح. ولكن إذا تمت إضافة العرض لاحقًا ، فهذا لا.
على سبيل المثال ، لدي روتين لتبديل طرق العرض. أبسط أشكال:
- (void)switchToNewViewController:(UIViewController *)newViewController {
if ([[window subviews]count]!=0) {
[[[window subviews]objectAtIndex:0] removeFromSuperview];
}
[window addSubview:newViewController.view];
}
إذا تم استدعاء هذا من داخل didfinishlaunching ، فإن التوجه صحيح. إذا لم يكن الأمر كذلك ، فإن التوجه هو صورة.
أبسط حالة داخل didfinishlaunching لدي السطران التاليان
// The following line works
[self switchToNewViewController:fullScreenViewController];
// The following line which delays the method call until later results
// in incorrect orientation
[self performSelector:@selector(switchToNewViewController:) withObject:fullScreenViewController afterDelay:0.1];
هل هناك طريقة لجعل المنظر له اتجاه مناسب؟
المحلول
تأكد
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES; //this supports all orientations
}
إذا كنت تربط الأشياء في InterfaceBuilder أيضًا ، فتأكد من تكوين View و ViewController إلى الاتجاه الأولي الذي تريده. (هناك القليل من السهم في الزاوية اليمنى العليا لتدوير المشاهدات وعرض وحدات التحكم)
إذا كنت لا تزال تواجه مشاكل ، هل تستخدم uinavigationController أو ما شابه؟ يجب أن يكون UinavigationController فطائر فرعية ويجب تنفيذها إذا كنت ترغب في دعم شيء آخر غير Portait.