【发布时间】:2017-04-22 20:37:25
【问题描述】:
我有一个视图控制器,它有一个UIView,我称之为playerView。在playerView 中,我使用AVLayer 和AVPlayerLayer 向用户展示视频。当您第一次点击任何视频时,对 Youtube 应用进行映像。
我如何操纵这个playerView 的框架,让它占据整个屏幕。 (全屏)
这是当前帧:
//16 x 9 is the aspect ratio of all HD videos
let height = view.frame.width * 9 / 16
let playerFrame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
playerView.frame = videoPlayerFrame
我在 YouTube 应用中进行了测试,他们的应用只支持纵向(就像我的一样),因为全屏视频的动画看起来如何。如何在点击按钮时甚至在用户水平握持设备时更进一步地做到这一点?
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.playerView.frame = ?
}, completion: nil)
编辑:试过了,但它并没有真正按照我想要的方式工作......它不会占据整个屏幕
UIView.animate(withDuration: 0.8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.playerView.frame = CGRect(x: 0, y: 0, width: self.view.frame.height, height: self.view.frame.width)
self.playerView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi / 2))
}, completion: nil)
【问题讨论】:
-
您不应该为框架设置动画。动画转换,你会没事的
-
@Mannopson 感谢您的建议!你能展示一些示例代码吗?
-
我指的是变换的比例而不是框架。
-
@Mannopson 你介意发布一些代码吗?我无法解读您的信息
-
我会给你一个想法,但不是现在。好吗?