我有如下 View 层次结构:
UIViewController
UIView (Top most view)
UIView (ContainerView)
UIView (MoviePlayer.swift) (with layer as AVPlayerLayer)
MoviePlayer 文件已发布 here .现在我想让 MoviePlayer View 全屏显示。当前代码不能很好地工作,因为 View 被限制在另一个 View 中。我试着让 y 坐标为负,但这并没有多大帮助。不知何故,这种方法也会混淆按钮的点击事件。 我认为的另一种方法是显示一个新的 View Controller ,其中包含两者之间通用的 MoviePlayer View 或类似的东西,我不知道该怎么做。我基本上想像在表格 View 单元格中显示的 Facebook iOS 应用程序那样做。
我不想使用 MPMoviePlayerController,它已经被弃用并且之前使用过它但有很多问题并且不允许自定义。
这是 link在我尝试类似设置的 github 上演示代码。我不能分享我的真实代码。单击全屏显示问题。实际上,我还必须在 UITableViewCell 中实现一个类似的视频播放器。
最佳答案
您可以尝试将一些 CGAffineTransform
应用到您的图层。
我遇到了类似的问题,这对我有用:我通过更改其约束常量并将变换应用于播放器层来调整带有播放器控件的容器的大小。这里是从 CGRect
创建 CGAffineTransform
的方法示例。
func CGAffineTransformFromRect(sourceRect: CGRect, toRect finalRect:CGRect) -> CGAffineTransform {
var transform = CGAffineTransformIdentity
transform = CGAffineTransformTranslate(transform, -(CGRectGetMidX(sourceRect) - CGRectGetMidX(finalRect)), -(CGRectGetMidY(sourceRect) - CGRectGetMidY(finalRect)))
transform = CGAffineTransformScale(transform, finalRect.size.width / sourceRect.size.width, finalRect.size.height / sourceRect.size.height)
return transform
}
关于ios: 将 AVPlayerLayer 移动到全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523985/