如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation
Posted
技术标签:
【中文标题】如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation【英文标题】:NavigationController willRotateToInterfaceOrientation is not getting called if i change the orientation of the topviewcontroller in iOS 8 【发布时间】:2014-11-25 13:04:13 【问题描述】:我的应用是基于导航的。我已经扩展了 UINavigationController 并在 NavigationController 和各个 ViewControllers 中实现了以下方法。
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 持续时间:(NSTimeInterval)duration -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
当方向改变发生在 ios 7 中,导航控制器中的 First Rotation 方法被调用,然后实际视图控制器中的相同方法被调用。我非常需要这个。
在 iOS8 的情况下,仅调用 Viewcontroller 的 Rotation 方法,而不是 Navigation 控制器。
注意:我也没有使用任何 ios 8 特定的定位方法。因为我改变了很多东西。所以请不要建议我实现以下 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator
【问题讨论】:
它已在 iOS8 中被弃用,取而代之的是-viewWillTransitionToSize:withTransitionCoordinator:
【参考方案1】:
iOS 8 已弃用该方法
在执行一步用户界面旋转之前发送到视图控制器。
Use viewWillTransitionToSize:withTransitionCoordinator: to make interface-based adjustments.
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
duration:(NSTimeInterval)duration
另请注意,当我们收到此通知时,视图已经更改为新方向。
更多参考https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/willAnimateRotationToInterfaceOrientation:duration:
【讨论】:
Question 明确要求 not 引用该方法。你能澄清你的答案吗?以上是关于如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置