日常:视频全屏屏幕旋转

一般在项目当中我们会设置app仅支持Portrait(home btn on the botton),并且保证适配所有尺寸的屏幕。如果进行了屏幕旋转(左右),那多数是会UI错乱的。

当一个视频播放需要全屏时,我们可以通过其他app发现其实它做了屏幕旋转的。

一、为什么说还是做了屏幕旋转

  1. 视频内容显示时:(以AVPlayer为例)

    • 原比例显示,导致其余留黑
    • 原比例拉伸,导致内容裁剪
    • 拉伸到边框,导致内容拉伸
  2. 如果没有做屏幕旋转,首先播放按钮位置不会有改变,其次全屏显示会导致上下两部分留黑(参见WWDC内视频)

二、怎么做屏幕旋转

  1. 点击全屏,屏幕旋转横屏(欺骗系统,设置设备方向)
let unknown = UIInterfaceOrientation.unknown.rawValue as NSNumber
UIDevice.current.setValue(unknown, forKey: "orientation")
let left = UIInterfaceOrientation.landscapeRight.rawValue as NSNumber
UIDevice.current.setValue(left, forKey: "orientation")
  1. 重写viewDidLayoutSubviews()

    • 当设置设备方向时会走此方法

    • 判断当前设备方向,跳过无需布局
      let duration = UIDevice.current.orientation

    • 旋转横屏后StatusBar是否隐藏(ios9.0横屏默认隐藏)

      • 设置StatusBarBool
      • 调用setNeedsStatusBarAppearanceUpdate()
    • 编写横屏布局

      • 旋转180:self.view.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi / 2))
      • 改变播放视图frame:
        CGRect(x: 0, y:0, width:屏幕的高 , height: 屏幕的宽)
      • 隐藏其他控件
    • 编写竖屏布局

      • 旋转回来:self.view.transform = CGAffineTransform(rotationAngle: CGFloat(0))
      • 还原播放视图frame
      • 还原其他控件
  2. 全屏返回时的操作

  • 获得当前设备方向,按需操作(portrait left right
    • portrait时
      • 返回上级页面pop or dismiss
    • 全屏时
      • 重设设备方向
let unknown = UIInterfaceOrientation.unknown.rawValue as NSNumber
UIDevice.current.setValue(unknown, forKey: "orientation")
let por = UIInterfaceOrientation.portrait.rawValue as NSNumber
UIDevice.current.setValue(por, forKey: "orientation")

注意:

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

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,229评论 4 61
  • 本文基于 Swift 3.x,由于 Swift 4.x 在语法规则上有较大变动,后续出一个 Swift 4.x 版...
    emmet7life阅读 10,351评论 4 21
  • 1. 孩子,老师特别的抱歉。每次想叫你回答问题,可名字到嘴边,总是突然“失忆”。 老师只是对你的名字不够敏感。但不...
    小鸡爱小米阅读 1,563评论 23 27
  • 想去南山 看看东篱 寻寻野菊的幽深 探探山径的隐逸 更想闻一闻 从田埂上走来 沾着草丛的气息 扑朔迷离 我要猜猜那...
    花雾醉秋阅读 288评论 0 1