在plist文件中设置强制竖屏的情况下
假如希望达到横屏的效果,可以通过旋转view来实现
基本是改变view的大小,或者某个视图的宽高互换,旋转view或者某个视图,这个过程可以搞个小动画
self.view.transform = CGAffineTransformMakeRotation(M_PI*1/2.0);
[UIView animateWithDuration:0.2f animations:^{
self.view.transform = CGAffineTransformMakeRotation(M_PI_2);
self.view.bounds = CGRectMake(0, 0, height, width);
}];
下面是控制横竖屏都支持模式下的
是否支持自动旋转,Yes会自动转动,NO,不会自动旋转,每次自动旋转就会改变[UIScreen mainScreen].bounds的值
// 是否支持旋转
- (BOOL)shouldAutorotate{
return NO;
}
设置支持的旋转类型,假如在APPdelegate中就表示全局配置,假如是导航栏控制器就表示导航栏控制器以及其子视图都遵循这个,假如在普通控制器中,就表示这个控制器
//当前支持的旋转类型
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
// 设置横屏
if ([XmoConfig sharedInstance].sdkConfig.horizontalScreen.intValue == 1) {
return UIInterfaceOrientationMaskLandscape;
}
// 设置竖屏
return UIInterfaceOrientationMaskPortrait;
}
present展示一个控制器,按照什么方向初始化控制器
//你跳转(present)到这个新控制器时,按照什么方向初始化控制器
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeRight;
}