在 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 中消除旋转方向的主要内容,如果未能解决你的问题,请参考以下文章

Objective-c:如何在启用纵向锁定的情况下在捕获后修复图像方向

通过Swift设置ARKit方向

快速调用objective-c类方法

旋转纹理时如何消除失真

消除view旋转后边缘有锯齿的情况

Objective-c 使用 UIInterfaceOrientationMask 来控制方向