ios那些事儿iOS学习iOS 开发每天分享优质文章

shouldAutorotate调用问题

2016-11-10  本文已影响1152人  gitKong

一般我们的项目都是只支持竖屏的,但最近做的项目是直播的,因此我播放的时候我需要旋转屏幕切换横竖屏,所以在项目设置中需要打开横屏

Paste_Image.png

那么问题来了,项目中有很多个控制器,但我只要这个播放控制器可以横竖屏,其他控制器不需要,此时有两个解决办法:

然后在支持横屏的控制器实现UIDeviceOrientationDidChangeNotification监听,参考我之前写的一篇简书指定控制器横屏,强制旋转屏幕就两句关键代码

此时应该有小伙伴说shouldAutorotate方法不调用,通过实测,下面我简单总结一下出现的情况:stackoverflow上有解释

// 跟控制器是导航控制器,那么在这个导航控制器中实现下面三个方法
-(BOOL)shouldAutorotate {
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations {
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
// 跟控制器是tabBar控制器,那么在这个tabBar控制器中实现下面三个方法
-(BOOL)shouldAutorotate {
    return [self.selectedViewController shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations {
    return [self.selectedViewController supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [self.selectedViewController preferredInterfaceOrientationForPresentation];
}

至于为什么会出现上面的问题,我也没搞懂这个方法的调用时机,如果你知道,欢迎大家留言😁还是那句,欢迎大家关注我,喜欢给个like

上一篇 下一篇

猜你喜欢

热点阅读