有没有办法强制在iPhone中更改界面方向?

iCl*_*ivs 12 uiinterfaceorientation ios

我知道如何允许/禁止使用方向旋转

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

但是,我现在遇到的问题是手机可能处于纵向(或倒置),并且在某些时候我想要旋转屏幕,就像用户旋转到横向一样.此时,我不想让自动旋转工作了.我想强制界面方向保持在横向.有没有办法做到这一点?我可能想出一个关闭自动旋转的黑客攻击,但是首先迫使旋转我不知道该怎么办.

这是我正在尝试做的事情:

  • 该应用程序旋转到任何和所有方向.一切正常.

  • 发生事件.

  • 现在,自动旋转仅适用于landscapeleft和landscaperight.此外,如果用户处于纵向或纵向倒置,我以编程方式旋转到landscaperight以将用户锁定到该方向.

只是为了让事情变得棘手,我想UIAlertView在强制轮换之前弹出一个(我知道该怎么做),让用户知道发生了什么,并且我想在alertView后面进行屏幕旋转而不是alertView.这甚至可能吗?

谢谢.

Bha*_*ath -2

是的,你可以这样做。你要做的就是在 -(void) viewwillappear 方法中简单地包含以下代码

if (self.interfaceOrientation == <current orientation>) {
        [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)<to which orientation you want to change.>];
    }
Run Code Online (Sandbox Code Playgroud)

它会解决你的问题

  • 该API是隐藏的,UIDevice实例的方向属性是只读的,因此可能会在Apple的审核过程中给您带来问题。 (2认同)