我有一個UIView
,其中包含一個AVPlayer
來顯示視頻。改變方向時,我需要更改視頻的大小和位置。當UIView幀發生變化時,視圖內的AVPlayer層不會調整大小
我對調整圖層大小不是很有經驗,所以我在調整視頻時遇到問題。
我通過創建AVPlayer
並把它的玩家我videoHolderView的層開始:
NSURL *videoURL = [NSURL fileURLWithPath:videoPath];
self.avPlayer = [AVPlayer playerWithURL:videoURL];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
playerLayer.frame = videoHolderView.bounds;
playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
playerLayer.needsDisplayOnBoundsChange = YES;
[videoHolderView.layer addSublayer:playerLayer];
videoHolderView.layer.needsDisplayOnBoundsChange = YES;
然後,在以後,我改變videoHolderView的幀的大小和位置:
[videoHolderView setFrame:CGRectMake(0, 0, 768, 502)];
在這一點上,我需要AVPlayer調整到這些相同的尺寸。這不會自動發生 - avPlayer在videoHolderView中保持小尺寸。
如果有人可以幫忙,我會非常感謝任何建議。
謝謝你們。
我不確定是否需要刪除並重新添加它,但是我通過將該圖層的框架設置爲過去的持有者視圖邊界來完成此操作。 – 2015-04-13 22:50:10
我將這種方式應用於我的項目,效果很好。與AVPlayerViewController和AVPlayerController相比,當您的項目仍然使用自動調整時,它具有更好的性能,並且沒有自動佈局警告問題。 – Jacky 2016-10-24 05:38:12
謝謝它的作品。 – 2017-04-25 15:14:08