gpt4 book ai didi

ios - 带 AVPlayerLayer 的全屏

转载 作者:行者123 更新时间:2023-11-30 11:36:59 25 4
gpt4 key购买 nike

我有两种观点

其中一个是AVPlayerLayer的容器,如下所示

containerView.layer.addSublayer(playerLayer)

containerView 有自己关于 superview 的自动布局

self.view.addSubview(containerView)
containerView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
containerView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
containerView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
containerView.heightAnchor.constraint(equalToConstant: 300).isActive = true

所以我重写了viewDidLayoutSubviews()

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
playerLayer.frame = containerView.frame
}

第二个 View 是containerView上的自定义播放控制 View

containerView.addSubview(playBackControlView)
playBackControlView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
playBackControlView.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
playBackControlView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
playBackControlView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true

并且有多种 View ,例如 UIButtonUISlider

这是我的问题

当我点击playBackControlView上的一个名为enlargeScreenButton的按钮时,如何使我的containerView、playBackControlView和AVPlayerLayer同时成为像横向模式一样的全屏

我已经阅读了this问题,但只有playerLayer发生了变化,而不是整个 View

(我不会设备旋转)

我在 Stackoverflow 上做了很多事情,但它们适合我的情况

如果我转换一些 View 会被破坏,如果我使用 UIScreen.main.bounds 更改框架也会破坏一些 View

最佳答案

我建议您创建一个具有自定义图层 View 的 PlayerView 子类,如下所示:

class PlayerView: UIView
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
}

这样您就可以操纵 View ,而无需关心子图层及其动画。然后您就可以使用与 answer you mentioned 中的动画类似的动画,但在 View 上。使用自动布局添加所有 subview 后,您应该可以正常使用,并且当您使用 UIView.animate

制作动画时,它们应该相应地更改

关于ios - 带 AVPlayerLayer 的全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com