AVPlayerLayer 在 UIView 层中的位置

Posted

技术标签:

【中文标题】AVPlayerLayer 在 UIView 层中的位置【英文标题】:AVPlayerLayer Position in UIView Layer 【发布时间】:2016-08-31 21:55:08 【问题描述】:

我正在使用 Swift 编写一个应用程序来通过 HLS 查看监控摄像头。我有基本的设备列表工作,我可以继续查看实时视图并显示流,但是,我需要移动 AVPlayerLayer,我无法弄清楚这一点。这是我当前的代码:

    let player = AVPlayer(URL: url!)
    let playerLayer = AVPlayerLayer(player: player)
    let view = UIView(frame: CGRectMake(0, 0, screenSize.width, screenSize.height))

    self.view.layer.borderWidth = 1
    self.view.layer.borderColor = UIColor(red:222/255.0, green:225/255.0, blue:227/255.0, alpha: 1.0).CGColor
    self.view.layer.addSublayer(playerLayer)

    playerLayer.frame = view.bounds
    player.play()

我希望将 AVPlayerLayer 放置在顶部下方 50 点处,因为我为每个视图场景都有一个标题。

谢谢!

【问题讨论】:

【参考方案1】:

所以碰巧您不能将子层放置在视图中的特定位置。这是解决方案:

    let player = AVPlayer(URL: url!)
    let playerController = AVPlayerViewController()
    playerController.player = player

    playerController.view.frame = CGRectMake(0, 50, screenSize.width, 240)
    self.view.addSubview(playerController.view)
    self.addChildViewController(playerController)

    player.play()

我必须设置播放器的特定高度,然后设置位置。

【讨论】:

【参考方案2】:

我没有看到您在哪里将 PlayerLayer 与 View 关联和/或将其作为子视图/图层添加到任何东西?您需要将其添加为子图层。

let player = AVPlayer(URL: url!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = CGRectMake(0,50,screenSize.width, screenSize.height)
self.view.layer.addSublayer(playerLayer)
player.play()

按照您在问题中建议的方式,我将 Y 位置移动了 50。

【讨论】:

以上是关于AVPlayerLayer 在 UIView 层中的位置的主要内容,如果未能解决你的问题,请参考以下文章

在 AVPlayerLayer 和 AVPlayerViewController 中同步视频

AVPlayerLayer 收缩动画

AVPlayerLayer 进入背景后在隐藏控制器中并进入前景并显示后为空白

全屏:调整其父视图的大小时不调整 AVPlayerLayer 的大小

UIView 子层中 CAShapelayer 的位置错误

Swift 从 UIView 的层中获取 UIImage