在标签栏应用中旋转视图控制器不在视图中

时间:2014-06-23 10:26:33

标签: ios rotation

我有一个标签栏应用程序。每个视图控制器都可以旋转。

我在风景中,如果我去查看控制器B并旋转到肖像,然后返回查看控制器A,A的视图还没有被旋转 - 因为它没有&#39 ; t得到事件 - 因此UI全部超出比例,我需要旋转设备进行排序。不好。

我可以听UIDeviceOrientationDidChangeNotification,但我不想手动调用旋转方法(willRotate,willAnimate,didRotate)......因为这显然是脆弱的。

为了让这项工作正常,我错过了什么?

1 个答案:

答案 0 :(得分:0)

我认为问题在于我的视图需要在轮换时运行的代码,这只发生在轮换通知方法中。

我解决这个问题的方法是:

 - (void) deviceOrientationChanged:(NSNotification *)notification {
    if (self.isViewLoaded && !self.view.window) {
        // viewController view is loaded, but not visible
        [self viewDidRotateOffscreen];
    }
 }
  1. willRotate,willAnimate,didRotate中的代码被拉入单独的方法。
  2. 我听了UIDeviceOrientationDidChangeNotification,并设置了一个BOOL标志viewDidRotateOffscreen(见上面的代码)
  3. 在viewWillAppear上,我检查BOOL标志viewDidRotateOffscreen,如果是,我运行我刚才在步骤1中提到的方法。
相关问题