ios:将AVPlayerLayer移动到全屏

时间:2015-09-11 12:53:01

标签: ios facebook swift avplayer avplayerlayer

我有以下视图层次结构:

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

MoviePlayer文件已发布here。现在我想让MoviePlayer视图全屏显示。由于视图受限于另一个视图,因此当前代码不能正常工作。我试图让y协调负面,但这没有多大帮助。不知怎的,这种方法也与按钮的点击事件混淆。 我认为另一种方法是显示一个新的视图控制器,其中MoviePlayer视图在两者之间是常见的,或者我不知道如何做到这一点。我基本上想要像在桌面视图单元格中显示的facebook iOS应用程序一样。

我不想使用MPMoviePlayerController,它已经被弃用并且以前使用它有很多问题并且不允许自定义。

这是link在github上的演示代码,我尝试了类似的设置。我无法分享我的真实代码。单击全屏显示问题。我实际上还必须在UITableViewCell中实现类似的视频播放器。

1 个答案:

答案 0 :(得分:1)

您可以尝试将一些CGAffineTransform应用于您的图层。

我面临类似的问题,这对我来说是有用的:我通过更改它的约束常量并将转换应用到播放器层来调整容器的控件大小。以下是从CGAffineTransform创建CGRect的方法示例。

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
}