shouldAutorotate不调用问题的解决

场景

程序只有一个简单的ViewController,要求启动后只横版显示,不能旋转。我设置了一下Info.plist中的支持方向后,在ViewController.m中加入如下代码:

- (BOOL)shouldAutorotate {
    return NO;
}

结果shouldAutorotate不调用,程序该旋转还是旋转。

解决

这种问题一般出在粗心,或者是iOS 9的分屏应用中。我的问题在于没有针对设备设置好Info.plist。只限制了Universal的方向,在iPad设备中却允许所有方向。

可以采用以下两种方式之一解决:

  1. 正确设置设备的允许方向:TARGETS -> General -> Deployment InfoDevices 设置为iPad, 再将 Device Orientation下勾选 Landscape Left 和 Landscape Right。

我先前在Devices设置为Universal时限制了方向,而Devices为iPad时,每个方向都是被勾选的。这个时候就允许了所有方向,shouldAutorotate函数在没有禁止分屏的情况下是不会被调用的。

  1. 设置全屏显示(禁止分屏):TARGETS -> General -> Deployment InfoRequires full screen 勾选。

苹果论坛中说,当开发分屏应用时也就放弃了对屏幕旋转的控制。这里虽然不是分屏应用,但显性要求全屏显示,可以让就算在支持所有方向的情况下,shouldAutorotate函数也会被调用。

参考

转载于:https://my.oschina.net/chicboi/blog/646037

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值