0

我有一个与 iOS 3.2+ 设备(iPad 和 iPhone)兼容的非常旧的应用程序。我有一个大问题使它与 iOS 7 兼容!

事实上,它早在 ARC、故事板和我们现在乐于使用的所有语法糖之前就已经写好了。而且我很难理解一些界面方向问题:

对于 iPhone,该应用程序仅在横向中可见......主 ViewController 没有问题。但是设置之一(一个带有 UITableView 的简单 ViewController)总是显示在 Portrait 中!无论我设置什么属性和编写什么方法。

.plist我只支持横向左右方向。在设置视图控制器中,我有这些方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return UIInterfaceOrientationIsLandscape(interfaceOrientation) || (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone);
}

- (BOOL) shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)?UIInterfaceOrientationMaskLandscape:UIInterfaceOrientationMaskAll;
}

但真正困扰我的是,当我显示self.interfaceOrientation它时,它会显示 Landscape(在viewWillAppear,viewDidAppear和中viewWillLayoutSubviews)。

但最奇怪的是,状态栏在横向,在纵向视图控制器之上!!!

(当然,问题出现在设备和模拟器上)

因此,如果有人可以帮助将 ViewController 全部放回 Landscape。提前致谢!

4

1 回答 1

0

好吧,终于找到了!!!

问题是(我仍然不知道确切原因)是由我在 ViewControllers 之间切换的方式(旧的 iOS 3 方式)引起的。

因此,如果要更正,我会测试该方法presentViewController:animated:completion是否可用(上帝保佑respondsToSelector:),并尽可能使用它。

问题解决了!

于 2013-10-04T14:14:00.877 回答