美文网首页iOS开发
IOS 屏幕旋转容易遇到的小问题

IOS 屏幕旋转容易遇到的小问题

作者: 清风醉人_007 | 来源:发表于2017-06-27 22:35 被阅读42次

    //Interface的方向是否会跟随设备方向自动旋转,如果返回NO,后两个方法不会再调用

    - (BOOL)shouldAutorotate {returnYES;}

    //返回直接支持的方向

    -(UIInterfaceOrientationMask)supportedInterfaceOrientations{returnUIInterfaceOrientationMaskPortrait;}

    //返回最优先显示的屏幕方向

    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {returnUIInterfaceOrientationPortrait;}

    这三个方法是iOS6之后才有的,有个特点是只在两种情况下才生效

    1.当前viewController是window的rootViewController。

    2.当前viewController是modal模式的,即此viewController是调用presentModalViewController而显示出来的.

    在以上两种情况中,supportedInterfaceOrientations的方法会作用于当前的viewController和所有的childViewController,如果不是以上的两种情况下的viewController,UIKit不会执行上述方法。

    其它的情况可以采取这种类似方式:

    在UINavigationController或UITabBarController里重写

    -(UIInterfaceOrientationMask)supportedInterfaceOrientations{ 

    return self.selectedViewController.supportedInterfaceOrientations;

    }

    -(BOOL)shouldAutorotate{

    return [self.selectedViewController shouldAutorotate];

    }

    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 

    return [self.selectedViewController preferredInterfaceOrientationForPresentation];

    }

    UINavigationController使用self.topViewController

    UITabBarController使用self.selectedViewController

    然后在viewController重写这三个方法,这样就巧妙的绕开了UIKit只调用rootViewController的方法的规则. 把决定权交给了当前正在显示的viewController.

    参考文章:http://www.jianshu.com/p/e473749f1c30

    相关文章

      网友评论

        本文标题:IOS 屏幕旋转容易遇到的小问题

        本文链接:https://www.haomeiwen.com/subject/ywduqxtx.html