将不同方向的 UIViewController 推送到上一个
Posted
技术标签:
【中文标题】将不同方向的 UIViewController 推送到上一个【英文标题】:Push UIViewController with different orientation to previous 【发布时间】:2011-07-14 15:32:30 【问题描述】:可能是一个简单的问题,但是:
我的应用程序以纵向模式启动(并且大部分时间是),但我有一个 ViewController 需要将其推送到需要以横向模式打开的堆栈上。
我四处搜索,发现您不能使用私有 API: [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];
我还发现了大量“建议”的解决方法(包括以模态方式呈现而不是推送,以及推送 ViewController 的两个实例) Transitioning to landscape rotation within a uinavigationcontroller
但是,我确信一定有更简单的方法来解决这个问题。如果有人知道一种将视图控制器推入堆栈的方法(以保留通过树的导航),以使视图控制器显示为横向,请告诉我。
感谢大家的帮助,
邓克
【问题讨论】:
为什么你确定一定有更简单的方法? Cannyboy 对这个问题的回答在我看来相当简单。 感谢罗杰。你是对的,Cannyboy's 确实有效(我在写这篇文章之前尝试过),我可能最终会使用它。但这意味着状态栏对该视图控制器隐藏。有什么建议可以保留吗? 【参考方案1】:使用UINavigationController
推送转换以不同方向呈现视图是没有意义的。导航栏/工具栏会朝哪个方向?
呈现模态视图控制器是解决此问题的正确方法。如果这导致状态栏被隐藏,请确保 yourModalViewController.wantsFullScreenLayout
是 NO
。
【讨论】:
以上是关于将不同方向的 UIViewController 推送到上一个的主要内容,如果未能解决你的问题,请参考以下文章
将多个 UICollectionViewCell 推送到同一个 UIViewController
将导航从 UITabbarController 推送到 UIViewController
将 UIBarButtonItem 添加到 UIViewController 推送到 UINavigation 控制器
从弹出窗口将 UIViewController 推送到 UINavigationController
将 UIViewController 推送到导航堆栈时如何显示选项卡栏
将 UIViewController 推送到 UINavigationController(也在 UITabBarController 中)