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
...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,176评论 8 184
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,273评论 4 61
  • 忙得很久没发文章了,发一首诗来分享: 临别漱 临别的时候,路灯儿高栖如寒鸟 她背对落满松针的小道挥手 眼睛稍微用力...
    微物敢齐肩阅读 357评论 0 0
  • 我一直想找机会跟少年谈谈社会复杂,江湖险恶。无奈他从来不给我机会,他总是一脸严肃的说:不是社会复杂,是你们大人的心...
    梅庄主在梅庄阅读 385评论 0 1
  • A ----> 继承概要 1)面对对象的三大特性:封装、继承、多态 2)继承即能保证类的完整, 又能简化代码 3)...
    b8028f13eaa2阅读 1,483评论 0 2