在plist文件中设置强制竖屏的情况下

假如希望达到横屏的效果,可以通过旋转view来实现
基本是改变view的大小,或者某个视图的宽高互换,旋转view或者某个视图,这个过程可以搞个小动画

  1. self.view.transform = CGAffineTransformMakeRotation(M_PI*1/2.0);
  2. [UIView animateWithDuration:0.2f animations:^{
  3. self.view.transform = CGAffineTransformMakeRotation(M_PI_2);
  4. self.view.bounds = CGRectMake(0, 0, height, width);
  5. }];

下面是控制横竖屏都支持模式下的

是否支持自动旋转,Yes会自动转动,NO,不会自动旋转,每次自动旋转就会改变[UIScreen mainScreen].bounds的值

  1. // 是否支持旋转
  2. - (BOOL)shouldAutorotate{
  3. return NO;
  4. }

设置支持的旋转类型,假如在APPdelegate中就表示全局配置,假如是导航栏控制器就表示导航栏控制器以及其子视图都遵循这个,假如在普通控制器中,就表示这个控制器

  1. //当前支持的旋转类型
  2. -(UIInterfaceOrientationMask)supportedInterfaceOrientations{
  3. // 设置横屏
  4. if ([XmoConfig sharedInstance].sdkConfig.horizontalScreen.intValue == 1) {
  5. return UIInterfaceOrientationMaskLandscape;
  6. }
  7. // 设置竖屏
  8. return UIInterfaceOrientationMaskPortrait;
  9. }

present展示一个控制器,按照什么方向初始化控制器

  1. //你跳转(present)到这个新控制器时,按照什么方向初始化控制器
  2. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
  3. return UIInterfaceOrientationLandscapeRight;
  4. }