使用 UINavigationController 自动旋转

Posted

技术标签:

【中文标题】使用 UINavigationController 自动旋转【英文标题】:Autorotate with a UINavigationController 【发布时间】:2009-06-23 23:45:19 【问题描述】:

我有点不清楚如何旋转 UINavigationController 上的视图。

我已经用我自己的一个覆盖了 UINavigationController 对象:

(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation return YES;

我在控制器上的堆栈上有一个视图,该视图是从带有两个视图的 xib 加载的。我想从纵向切换到横向。通常我会通过从视图本身的 nib 文件中更改视图来处理这个问题。我必须在导航控制器中实现旋转代码还是仅在我的视图代码中实现?

(void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 持续时间:(NSTimeInterval)持续时间

willAnimate 代码是我习惯在视图本身中使用的代码,但我仍然没有看到视图被更改,我想可能是我需要访问 NavigationController 中的视图和更改它,甚至覆盖导航控制器中的相同方法并在那里切换我的视图。

有什么建议吗?我以前从未真正这样做过,只是发现 TabViewControllers 和 NavigationControllers 默认都是纵向模式。

【问题讨论】:

【参考方案1】:

原来无法更改视图,因为我试图更改导航控制器上的 RootView。我通过放置我自己的伪根视图控制器来解决这个问题,该控制器永远不会出现在导航堆栈的根位置。我覆盖了一些导航控件来解决这个问题,因此功能将保持不变,并且我可以根据需要更改我想要的感知根视图。

可以在此链接中找到正确方向的开始:

http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller's-root-view-controller/

【讨论】:

以上是关于使用 UINavigationController 自动旋转的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationcontroller 中未使用的视图会发生啥?

使用 push segue 时 UINavigationController 是不是强制

UINavigationController - 使用 UIBlurEffect 清除背景

一起使用 UITabBarController 和 UINavigationController

iPhone - UINavigationController - 使用 CATransaction 自定义动画

如何在 SwiftUI 中使用 UINavigationController