美文网首页iOS Developer
iOS单独页面旋转

iOS单独页面旋转

作者: 狗带儿 | 来源:发表于2016-05-24 14:57 被阅读1217次

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


爱奇艺页面

一种方法是通过旋转播放器视图并改变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
...

相关文章

  • iOS单独页面旋转

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

  • iOS-屏幕旋转截屏相关

    本篇收录各种屏幕旋转知识点等. 1.详解iOS开发中处理屏幕旋转的几种方法2.iOS 个别页面强制横屏,其他页面竖...

  • iOS页面旋转详解

    前言 在iOS开发中,如果APP需要支持横屏,就要控制页面旋转,但是让页面支持旋转的方式有很多,在此总结一下,说一...

  • iOS上传图片后台旋转展示问题

    iOS上传图片后台旋转展示问题 在一次上传图片到服务器后,去后台页面查看,发现iOS显示的图片总是旋转90℃的,而...

  • 控制单个控制器横屏

    对于个别单独需要竖屏的页面,在对应的控制其中添加如下代码: 方法一:旋转类型 方法二:旋转时设置 使用方法: 点击...

  • iOS屏幕旋转的奥秘

    本文从一个页面支持的方向、屏幕的旋转、size class这三方面简述iOS屏幕旋转的奥秘。 一个页面支持的方向 ...

  • iOS 页面旋转小结

    近期项目中需要对部分页面进行可旋转的控制,本篇文章算是对开发过程的一个总结。为何这么简单的东西要总结?还不是一直没...

  • Runtime解决屏幕旋转问题

    前言 大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法...

  • iOS- 支持某个页面旋转

    /* 旋转 */ (BOOL)shouldAutorotate {return YES;}//支持旋转方向 (UI...

  • iOS 部分页面支持旋转

    我的更多文章:你等下课滴 您可以关注我以便随时查看我最新的文章,本篇文章是为了做笔记,顺便提供给大家共同学习进步!...

网友评论

    本文标题:iOS单独页面旋转

    本文链接:https://www.haomeiwen.com/subject/fmjzrttx.html