美文网首页
在手机禁用横屏的时候用陀螺仪修改APP屏幕方向

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

作者: 34码的小孩子 | 来源:发表于2016-04-14 11:36 被阅读1608次

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

    实现方法:

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

    相关文章

      网友评论

          本文标题:在手机禁用横屏的时候用陀螺仪修改APP屏幕方向

          本文链接:https://www.haomeiwen.com/subject/aeeglttx.html