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