Swift3 AVPlayerLayer未完全填充UIVIew。我错过了什么?
我正在播放的视频没有占用Swift3 AVPlayerLayer未完全填充UIVIew。我错过了什么?,swift3,avplayerlayer,Swift3,Avplayerlayer,我正在播放的视频没有占用UIView(名为videoView)的整个区域,该区域为灰色: 大多数答案都声称我需要将帧设置为边界(ofUIView),或者将videoGravity设置为AVLayerVideoGravityResizeAspectFill。我两个都试过了,但由于某种原因,它仍然不能完全填满空间 var avPlayer: AVPlayer! var avPlayerLayer: AVPlayerLayer! var paused: Bool = false @IBOutlet
UIView
(名为videoView)的整个区域,该区域为灰色:
大多数答案都声称我需要将帧设置为边界(ofUIView
),或者将videoGravity
设置为AVLayerVideoGravityResizeAspectFill
。我两个都试过了,但由于某种原因,它仍然不能完全填满空间
var avPlayer: AVPlayer!
var avPlayerLayer: AVPlayerLayer!
var paused: Bool = false
@IBOutlet weak var videoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let theURL = Bundle.main.url(forResource:"HOTDOG", withExtension: "mp4")
avPlayer = AVPlayer(url: theURL!)
avPlayerLayer = AVPlayerLayer(player: avPlayer)
avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
avPlayerLayer.frame = videoView.layer.bounds
videoView.layer.insertSublayer(avPlayerLayer, at: 0)
}
任何帮助都将不胜感激。:) 经过很长时间,我找到了答案 下面的代码应移动到ViewDidAppease()中,如下所示:
该布局是为iPhone SE(小屏幕)设计的,因此当在更大的屏幕上测试时,该应用程序会从自动布局中获取最初设置的大小,并根据该大小进行调整。通过将代码移动到ViewDidAspect()中,应用程序将根据新的约束调整窗口大小 经过很长时间,我找到了答案 下面的代码应移动到ViewDidAppease()中,如下所示:
该布局是为iPhone SE(小屏幕)设计的,因此当在更大的屏幕上测试时,该应用程序会从自动布局中获取最初设置的大小,并根据该大小进行调整。通过将代码移动到ViewDidAspect()中,应用程序将根据新的约束调整窗口大小 只需将帧线
avPlayerLayer.frame=videoView.layer.bounds
移动到viewdilayoutsubview
中,如下所示:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
avPlayerLayer.frame = videoView.layer.bounds
}
其余部分应该像您一样,继续使用
viewdiload
函数。只需将帧线avPlayerLayer.frame=videoView.layer.bounds
移动到viewdilayoutsubview
,如下所示:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
avPlayerLayer.frame = videoView.layer.bounds
}
其余的应该像您一样,插入viewDidLoad
函数