iOS 部分界面强制屏幕横屏

2018-01-20  本文已影响24人  慕言的世界

不赘述直接切入本次话题部分界面屏幕横屏

因为是部分界面屏幕横屏故我们先设置项目只能竖屏,如下:
AppDelegate.h文件中带么设置 如下:

//.h文件夹添加属性
@property (nonatomic,assign)BOOL isCanRotation;//是否可旋转
//.m文件中
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if (_ isCanRotation){//默认是NO故不可旋转
//这里设置屏幕旋转的方向
        return  UIInterfaceOrientationMaskLandscapeRight;
    } else {
        return UIInterfaceOrientationMaskPortrait;
    }
}

其实选中工程 ->General->Deployment info ->Device Orientation 只要勾选Portrait也可禁止横屏。
但是要求部分界面横屏所以不能固定死。

在需要横屏的界面 或者点击事件下添加图下代码即可:

//设置横屏
    NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];

//设置竖屏
    NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];

这样就很简单的完成部分界面横屏的强制转换了。

话题未完!!!

有的小伙伴可能会遇到以下一个问题:

问题描述

有A、B俩个界面,从A界面到B界面要求B界面立即横屏,返回的时候A界面是竖屏的。
在B界面的时候,如果你在点击返回事件前手机是竖屏的,那么你会发现当你点击返回的时候屏幕并没有真正的竖屏。

原因分析

因为手机物理竖屏的时候系统获取的当前状态就是竖屏了,所以当你点击返回A界面竖屏的时候屏幕并没有真正的竖屏。

解决方法

只要干扰手机获取当前的物理状态就好了。

    NSNumber *orientationUnknown = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
    [[UIDevice currentDevice] setValue:orientationUnknown forKey:@"orientation"];

在设置屏幕状态前加上Unknown 状态即可

上一篇下一篇

猜你喜欢

热点阅读