第一步:
首先在工程文件里设置如下:
第二步:
在AppDelegate中添加方法关闭横竖屏切换,方法如下
- AppDelegate.h中外露一个属性
@property(nonatomic,assign)BOOL allowRotation;//是否允许转向 - AppDelegate.m中添加方法
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window{
if (_allowRotation == YES) { // 如果属性值为YES,仅允许屏幕向左旋转,否则仅允许竖屏
return UIInterfaceOrientationMaskLandscapeRight; // 这里是屏幕要旋转的方向
}else{
return (UIInterfaceOrientationMaskPortrait);
}
}
第三步:
在需要强制横屏的页面写上如下代码:
- 在viewDidLoad 方法设置如下:
AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = YES;//(以上2行代码,可以理解为打开横屏开关)
[self setNewOrientation:YES];//调用转屏代码
- 具体实现方法:
- (void)setNewOrientation:(BOOL)fullscreen{
if (fullscreen) {
NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
[[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];
NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
}else{
NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
[[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];
NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
}
}
- 在页面离开的时候恢复竖屏
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = NO;//关闭横屏仅允许竖屏
[self setNewOrientation:NO];
}