iOS开发强制个别界面竖屏显示

方法

1、通过AppDelegate的 - application: supportedInterfaceOrientationsForWindow: 方法来设置

这个方法是干什么的,说明一下这个方法是用来设置界面支持的转屏方向,不是用来转屏的,这个方法不能满足部分需求。

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)nowWindow {
    if (_deviceOrientationPortrait) {
        return UIInterfaceOrientationMaskPortrait;
    }
    return UIInterfaceOrientationMaskLandscape | UIInterfaceOrientationMaskPortrait;
}

_deviceOrientationPortrait是AppDelegate的一个Bool属性,当需要竖屏显示的界面:

在一个界面中,如下处理

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [[AppDelegate delegate] setDeviceOrientationPortrait:YES];
}
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    [[AppDelegate delegate] setDeviceOrientationPortrait:NO];
}

注意:这样只能设置该界面所支持的转屏方向,如果刚开始进入界面的时候是其他方向,就不能保证界面转回来。如果整个项目需要设置横竖屏,直接用这个方法还是挺好的。

2、如果刚进入界面就要让界面处于竖屏,就要复写一下几个方法来处理:

- (BOOL)shouldAutorotate {
    return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

这种方式需要配置如下,why:

这里写图片描述

3、

最后

UINavigationController或UITabBarController,需要做特殊处理。

//是否自动旋转
-(BOOL)shouldAutorotate{
    return self.topViewController.shouldAutorotate;
}
//支持的方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return self.topViewController.supportedInterfaceOrientations;
}
//一开始的方向  很重要
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return self.topViewController.preferredInterfaceOrientationForPresentation;
}

推荐阅读:https://www.jianshu.com/p/6ac34ab1ea24 选择性采纳。

扫描二维码关注公众号,回复: 1072185 查看本文章

猜你喜欢

转载自blog.csdn.net/morris_/article/details/80091602