旋转标签栏应用程序中不在视图中的视图控制器
Posted
技术标签:
【中文标题】旋转标签栏应用程序中不在视图中的视图控制器【英文标题】:Rotate view controller not in view in tab bar app 【发布时间】:2014-06-23 10:26:33 【问题描述】:我有一个标签栏应用程序。每个视图控制器上的旋转都很好。
我在横向,如果我转到视图控制器 B 并旋转到纵向,然后返回视图控制器 A,A 的视图尚未旋转 - 因为它没有得到事件 - 所以 UI 是完全不成比例,我需要旋转设备来整理它。不好。
我可以监听 UIDeviceOrientationDidChangeNotification,但我不想手动调用旋转方法(willRotate、willAnimate、didRotate)......因为这显然是脆弱的。
为了让它正常工作,我缺少什么?
【问题讨论】:
您能分享一些代码以获取更多信息吗?您是否将 tabBar 子类化了? 【参考方案1】:我认为问题在于我的视图中的代码需要在轮换中运行,而这只发生在轮换通知方法中。
我解决这个问题的方法是:
- (void) deviceOrientationChanged:(NSNotification *)notification
if (self.isViewLoaded && !self.view.window)
// viewController view is loaded, but not visible
[self viewDidRotateOffscreen];
-
willRotate、willAnimate、didRotate 中的代码被拉入一个单独的方法中。
我监听了 UIDeviceOrientationDidChangeNotification,并设置了一个 BOOL 标志 viewDidRotateOffscreen(参见上面的代码)
在 viewWillAppear 上,我检查了 BOOL 标志 viewDidRotateOffscreen,如果它是真的,我运行我在第 1 步中提到的方法。
【讨论】:
以上是关于旋转标签栏应用程序中不在视图中的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
将 UINavigationController 添加到 UITabBarController 而不在所有视图中显示标签栏
如何在 iOS 6 GM 中的标签栏应用程序中使旋转正常工作?