gpt4 book ai didi

ios - AvPlayerLayer 大小调整不正确?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:27:51 24 4
gpt4 key购买 nike

我有一个带有 UIImageView 的旋转木马对象,我试图在其中对 AvPlayerLayer 进行子层处理。

虽然它没有填满 _videoView 的整个边界,但它工作得很好,它的高度看起来更小,尽管我已经测试过将高度更改为极值,但只要它与UIImageView.

我用来实现这个的代码如下:

    UIView *embeddedView = [[UIView alloc] initWithFrame:_videoView.bounds];
embeddedView.center = CGPointMake(100, 140);
AVPlayerItem *avPlayeritem = [[AVPlayerItem alloc] initWithURL:[NSURL URLWithString:[_videoURLS objectAtIndex:carousel.currentItemIndex]]];
AVPlayer *avPlayer = [[AVPlayer alloc] initWithPlayerItem:avPlayeritem];
AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
[avPlayerLayer setFrame:embeddedView.frame];
avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
[avPlayerLayer setNeedsLayout];
[embeddedView.layer addSublayer:avPlayerLayer];
[carousel.currentItemView addSubview:embeddedView];
//Assign to notication to check for end of playback
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:avPlayeritem];
[avPlayer seekToTime:kCMTimeZero];
[avPlayer play];

这是发生了什么的图像,您可以在顶部和底部分辨出它: viewOffBounds

这是什么原因造成的,我该如何解决?

最佳答案

我认为视频没有填满 videoView 的整个边界是合乎逻辑的,因为您设置了 avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspect。你应该设置成AVLayerVideoGravityResizeAspectFill,就可以了。

区别在于:

  • AVLayerVideoGravityResizeAspect - 显示与原始大小成比例的视频,不允许任何变形。

  • AVLayerVideoGravityResizeAspectFill - 调整视频大小,以填充其 subview 的整个边界,而不关心比例。

最后一件事,做 [avPlayerLayer setFrame:embeddedView.bounds] 它比 [avPlayerLayer setFrame:embeddedView.frame] 好。

希望这有帮助:)

关于ios - AvPlayerLayer 大小调整不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com