Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 AVPlayerLayer未完全填充UIVIew。我错过了什么?_Swift3_Avplayerlayer - Fatal编程技术网

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)的整个区域,该区域为灰色:

大多数答案都声称我需要将帧设置为边界(of
UIView
),或者将
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
函数