iOS原生强制旋转屏幕适配

这两天做项目,遇到一个需求,在竖屏的A页面,跳转到横屏的B页面,然后进行手写签名操作。

因为整个项目都没做横屏适配的,如果单纯的打开项目的横屏操作,将会导致在其他页面当用户旋转手机的也会出现横屏,这样布局就会错乱,很影响用户的体验的

所以我想这样操作,全局开启横屏功能,然后关闭自动旋转。最后在需要的页面,进行强制旋转操作

首先打开项目的支持横屏的功能


在xcode里面配置下

添加修改部分文件

  • 在.h文件中增加允许旋转属性
/// 是否允许转向
@property(nonatomic,assign)BOOL allowRotation;

 

  • 在.m文件中添加旋转方法,默认竖屏
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{ if (self.allowRotation == YES) {
        return UIInterfaceOrientationMaskLandscape;
    }else{
        //竖屏
        return UIInterfaceOrientationMaskPortrait;
    }
}

 

  • 为UIDevice写一个分类,写旋转屏幕的方法
/// .h文件

@interface UIDevice (AMDevice)

/**
* @interfaceOrientation 输入要强制转屏的方向
*/

+ (void)switchNewOrientation:(UIInterfaceOrientation)interfaceOrientation;
@end

/// .m文件

#import "UIDevice+AMDevice.h"

@implementation UIDevice (AMDevice)

+ (void)switchNewOrientation:(UIInterfaceOrientation)interfaceOrientation{

    NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
    [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];
    NSNumber *orientationTarget = [NSNumber numberWithInt:interfaceOrientation];
    [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
}
@end

 

  • 在需要旋转的控制器中调用
/// 导入头文件AppDelegate和UIDevice+AMDevice

- (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

    //允许转成横屏
    appDelegate.allowRotation = YES;

    //调用横屏代码
    [UIDevice switchNewOrientation:UIInterfaceOrientationLandscapeLeft];
    [self createSubViews];//初始化UI

}

 

  • 取消旋转
AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
//关闭横屏仅允许竖屏
appDelegate.allowRotation = NO;
//切换到竖屏
[UIDevice switchNewOrientation:UIInterfaceOrientationPortrait];

 

效果图


 

版权声明:
作者:Amber
链接:https://late.run/archives/7
来源:LATE-努力努力再努力
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录