iOS单独页面旋转

项目中有一个页面需要播放视频,整体类似爱奇艺的视频详情页面,当然需要有播放器的所有功能,包括全屏。


爱奇艺页面

一种方法是通过旋转播放器视图并改变frame来实现

// 全屏
playerview.transform = CGAffineTransformMakeRotation(M_PI/2);

//然后修改播放器和播放器上控件的frame
...

// 退出全屏
playerview.transform = CGAffineTransformMakeRotation(0);

//然后修改播放器和播放器上控件的frame
...

这样写因为手机的方向其实并没有改变,还是竖屏,所以状态栏不会跟着旋转,需要做一些隐藏状态栏什么的操作。

另外一种方法:
首先设置Xcode

Xcode设置

然后就是这两个方法

// 这个方法返回支持的方向
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
  return UIInterfaceOrientationMaskAll
}

// 这个返回是否自动旋转
- (BOOL)shouldAutorotate{
  return NO;
}

第一个返回当前页面支持旋转的方向,第二个是是否支持自动旋转(手机方向没锁的情况下)。因为并不需要自动旋转,所以 shouldAutorotate 返回了 NO。
写完以后发现并没有什么卵用,网上有很多人也写了,这两个方法需要写在根视图,所以如果你的跟视图是这样写的

UIViewController * firstVC = [UIViewController new];
 UINavigationController *nvc = [[UINavigationController alloc]initWithRootViewController:firstVC];
 self.window.rootViewController = nvc;

就在firstVC中

-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
   UINavigationController *nvc = (UINavigationController *)self.navigationController;
   return nvc.topViewController.supportedInterfaceOrientations;
}

- (BOOL)shouldAutorotate{
    UINavigationController *nvc = (UINavigationController *)self.navigationController;
    return nvc.topViewController.shouldAutorotate;
}

如果你的根视图是一个TabBarController ,就在TabBarController中

-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return self.selectedViewController.supportedInterfaceOrientations;
}

- (BOOL)shouldAutorotate{
    return self.selectedViewController.shouldAutorotate;
}

然后再去每个Controller中设置这两个值
最后,视频横屏全屏

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
 [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
[UIViewController attemptRotationToDeviceOrientation];

//重新设置frame
...

推荐阅读更多精彩内容

  • 忙得很久没发文章了,发一首诗来分享: 临别漱 临别的时候,路灯儿高栖如寒鸟 她背对落满松针的小道挥手 眼睛稍微用力...
    半完成的南风阅读 58评论 0 0
  • 我一直想找机会跟少年谈谈社会复杂,江湖险恶。无奈他从来不给我机会,他总是一脸严肃的说:不是社会复杂,是你们大人的心...
    梅庄主在梅庄阅读 93评论 0 1
  • A ----> 继承概要 1)面对对象的三大特性:封装、继承、多态 2)继承即能保证类的完整, 又能简化代码 3)...
    516349939阅读 312评论 0 1
  • 每次一有出轨的八卦新闻,看客心里的大众就群起而上。 为什么我们这么热衷于别人的狗血生活呢? 第一,仿佛别人能替我们...
    梨祯summer阅读 153评论 0 0