将videoGravity设置为AVLayerVideoGravityResizeAspectFill对iOS 5.0没有影响

时间:2011-12-12 12:22:38

标签: ios ios5 avplayer

我已经使用AVPlayer实现了一个自定义电影播放器​​。在AVPlayerLayerAVLayerVideoGravityResizeAspectFill中设置videoGravity的值时,我会在iOS 4.2, 4.3中看到所需的效果。但不知怎的,iOS 5.0它没有任何效果。有人看到类似的问题吗?我做错了吗?

2 个答案:

答案 0 :(得分:17)

在iOS5上,您应该在设置videoGravity后重置图层边界。

这对我有用:

((AVPlayerLayer *)[self layer]).videoGravity = AVLayerVideoGravityResizeAspectFill;
((AVPlayerLayer *)[self layer]).bounds = ((AVPlayerLayer *)[self layer]).bounds;

EDITED:“self”指向一个PlayerView(UIView的子类)对象,例如“全部放在一起”:  https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

答案 1 :(得分:3)

你能用miham的建议解决你的问题吗?我的问题被这个“BoltClock”主持人禁止了,只是想知道这个建议对你有用,因为它不适合我。

拜托,BoltClock,请不要删除我的问题。我认为合法地询问“自我”对象是什么类型。 miham说这个解决方案适合他,好吧,它对我不起作用,所以我认为质疑“自我”指向的东西可能会给我提供关于我应该使用什么样的对象的线索。文档称将重力设置为AVLayerVideoGravityResizeAspectFill会将视频剪辑到AVPlayerLayer视图,但它没有这样做,我在iOS 4.3.2和iOS 5中对此进行了测试,因此将miham的答案留给了Soumya Das原始问题的无答案,我的(我自己指的是什么?)。也许你有答案?如果是的话,把它贴在这里,不要只删除我的问题。

<强>编辑: 找到了解决这个问题的方法。 在IB 中勾选复选框“剪辑子视图”,查看包含您要将视频播放器附加到的图层的视图。然后,设置AVPlayerLayer对象的AVLayerVideoGravityResizeAspectFill。如果您没有IB中的视图,但是您是以编程方式创建它,请将其 clipsToBounds 属性设置为YES。