我有一个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