ios: 将 AVPlayerLayer 移动到全屏

标签 ios facebook swift avplayer avplayerlayer

我有如下 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/

相关文章:

android - 如何在Flutter中获取Facebook受众网络的设备ID?

arrays - 过滤字典数组

ios - 如何在水平collectionview中设置不同的单元格高度和宽度

ios - 无法实现 JSQMessagesViewController Swift 3 所需的方法

ios - 按钮中的图像无法加载,我只得到一个蓝色方 block

iphone - 如何使用 Cocoa-Touch 在时间前面加上零?

Facebook Instant Games - 与一群玩家一起玩游戏

安卓/ Facebook : Insufficient priviledges when using Api

ios - CocoaPods 仅依赖于调试/发布版本

ios - 由于未捕获的异常 'NSRangeException' 而终止应用程序,原因 : 'Cannot remove an observer - ios