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

2016-04-14  本文已影响1608人  34码的小孩子

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

实现方法:

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"];

上一篇 下一篇

猜你喜欢

热点阅读