在 Objective-C 中消除旋转方向
Posted
技术标签:
【中文标题】在 Objective-C 中消除旋转方向【英文标题】:Eliminate Rotation Orientation in Objective-C 【发布时间】:2013-07-06 00:02:54 【问题描述】:目前,在我的应用程序中,我不需要允许发生侧向,除了一个视图应该在用户侧向时显示另一个 uiview。假设我有 20 个 UIViewControllers 允许从 mainviewcontroller (UINavigationController) 访问。现在,还假设 UIViewController #7 在显示时有两个视图,一个显示为侧向,一个显示为纵向。 我不希望你们认为我想在应用程序的整个生命周期中消除 Rotation Orientation,而只是针对 19 个视图,并且最后一个 uiviewcontroller 支持它。
如果用户对那个视图进行了侧向定向,那么用户应该像往常一样看到应用程序,没有定向效果。
我希望用户只使用纵向视图,仅用于那个视图控制器。也许如果用户将手机旋转 180 度,上下颠倒,那么肯定,应用应该翻转但仍处于纵向视图中。
有人有什么想法吗?我正在部署到 ios 6.1,所以我使用的一些方法已被弃用,这是我想要远离的......
比如这个方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
return NO;
我做过几个测试用例:
- (NSUInteger) supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationPortrait;
- (BOOL) shouldAutorotate
return NO;
我还检查了与 *** 相关的问题,但我无法简单地找到答案。
我认为这应该是我覆盖的一种可能两种方法,但我不能这样做.....如何消除 UIViewController 中的侧面方向????
【问题讨论】:
只需设置应用属性即可锁定除一个方向以外的所有方向。它是应用属性第一个屏幕上的按钮。 参考已编辑的问题 UIViewController 或 UIView 中有一个函数可以返回支持的方向,只需修改它(这个名字我现在不知道) @bengoesboom :UIViewController
方法 supportedInterfaceOrientations
如果你们注意到...我确实实现了方法supportedInterfaceOrientations...但我认为我没有正确使用它,因为应用程序仍然面向我试图消除的视图它为。
【参考方案1】:
有一些关于 SO 的问题涵盖了这个主题;例如here 的信息非常丰富。
或者,this 或 this 怎么样?
IIRC,在我观看的关于这个主题的一个 WWDC 视频中,推荐的方法是进行模态演示,但如果你愿意,可以使用各种 hack。
编辑:
更多数据在这里:iOS6 Preferred Interface Orientation Not Working
在这里:In iOS6, trouble forcing ViewController to certain interfaceOrientation when pushed on stack
正如我所说,如果您想强制定向,我相信呈现视图控制器(模态或其他)是要走的路,请参阅this 解释。
【讨论】:
以上是关于在 Objective-C 中消除旋转方向的主要内容,如果未能解决你的问题,请参考以下文章