iOS 个别页面强制横屏,其他页面竖屏

在开发项目的时候,遇到了一个问题,就是其中一个页面需要强制横屏,而其他页面要强制竖屏。

我的解决方法是这样的。在AppDelegate.h里面添加

@property(nonatomic,assign)NSInteger allowRotation;

在AppDelegate.m
文件里面添加
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (_allowRotation == 1) {
return UIInterfaceOrientationMaskLandscapeRight;
}
else {
return (UIInterfaceOrientationMaskPortrait);
}
}

这样默认所有的页面就是竖屏的,在要跳转的强制横屏的页面的控制器UIViewController里面,引入#import "AppDelegate.h"
然后
- (void)viewDidLoad{
[super viewDidLoad];
AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = 1;
}
同时在进行模态跳转返回的竖屏页面,需要添加以下代码

-(void)viewWillAppear:(BOOL)animated{
  AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = 0;
 }

如果不添加上面的代码,模态跳转返回后,页面依然是横屏的。
就可以让个别页面单独横屏了,测试了一下,只有模态跳转的页面,可以改变屏幕方向,push的不行。
截屏如下


1.gif

你可能感兴趣的:(iOS 个别页面强制横屏,其他页面竖屏)