在手机禁用横屏的时候用陀螺仪修改APP屏幕方向

前提:项目必须勾选可以支持横竖屏。

实现方法:

1.使用陀螺仪判断设备的方向:

Z的绝对值是1的时候是水平地面的,是0的时候是垂直地面的。0.5是设置的误差,解决桌面有一点倾斜的时候,手机放置在桌面上会不停地旋转。

2.重写屏幕旋转相关的方法:

- (BOOL)shouldAutorotate;

设置是否支持旋转的,只有返回YES,才会调用下面的两个方法。

 - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;

旋转前调用的方法,toInterfaceOrientation是即将要旋转的方向,可以在该方法内更新UI布局。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

旋转后调用的方法,fromInterfaceOrientation是原先的方向,也可以在该方法内更新UI布局,但更推荐用上一个方法。

使用[[UIDevice currentDevice] setValue:value forKey:@"orientation"];手动设置方向之后,系统会自动调用shouldAutorotate;

3.注意:

如果项目中存在只支持竖屏或者横屏的页面,该页面与可支持横竖屏的页面交互的时候会出现某些问题。譬如A页面只支持竖屏,B页面可支持横竖屏。A跳转到B,B页面旋转横屏然后返回A,此时,A是横屏的。为了解决这个问题,需要在A页面的viewDidAppear:方法强制设置屏幕方向。

NSNumber*value = [NSNumbernumberWithInt:UIInterfaceOrientationPortrait];

[[UIDevicecurrentDevice]setValue:valueforKey:@"orientation"];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容