ios: 将 AVPlayerLayer 移动到全屏

ios: Move AVPlayerLayer to fullscreen

我有如下视图层次结构:

UIViewController
    UIView (Top most view)
        UIView (ContainerView)
            UIView (MoviePlayer.swift) (with layer as AVPlayerLayer)

MoviePlayer 文件已发布 here。现在我想让 MoviePlayer 视图全屏显示。当前代码不能很好地工作,因为视图被限制在另一个视图中。我试着让 y 坐标为负,但这并没有多大帮助。不知何故,这种方法也会混淆按钮的点击事件。 我认为的另一种方法是显示一个新的视图控制器,其中包含两者之间通用的 MoviePlayer 视图或类似的东西,我不知道该怎么做。我基本上想像在 table 视图单元格中显示的 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
}