我有两种观点
一种是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
}第二个视图是containerView上的自定义播放控件视图
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还有几种视图,如UIButton、UISlider等
这是我的问题
当我在playBackControlView上点击一个名为enlargeScreenButton的按钮时,怎样才能让我的containerView、playBackControlView和AVPlayerLayer同时成为全屏的横屏模式
我已经阅读了this问题,但只有playerLayer改变了,而不是整个视图
(我不会设备旋转)
我在Stackoverflow上做了很多事情,但它们适合我的情况
如果我转换一些视图,如果我用UIScreen.main.bounds改变框架,也会破坏一些视图
发布于 2019-01-23 16:37:23
我建议你创建一个带有自定义图层视图的PlayerView子类,如下:
class PlayerView: UIView
override class var layerClass: AnyClass {
return AVPlayerLayer.self
}
}这样你就可以在不关心子层和它的动画的情况下操作视图。然后,您就可以在视图上使用与answer you mentioned中的动画类似的动画了。使用自动布局添加了所有子视图后,您就可以开始使用了,当您使用UIView.animate设置动画时,这些子视图应该会相应地更改
https://stackoverflow.com/questions/49641826
复制相似问题