简体   繁体   中英

Setting videoGravity to AVLayerVideoGravityResizeAspectFill has no effect on iOS 5.0

I have implemented a custom movie player with AVPlayer . On setting the value of videoGravity in AVPlayerLayer to AVLayerVideoGravityResizeAspectFill I see the desired effect in iOS 4.2, 4.3 . But somehow on iOS 5.0 it has got no effect. Is anybody seeing a similar issue? Am I doing something wrong?

On iOS5 you should reset layers bounds after setting videoGravity.

This worked for me:

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

EDITED: "self" points to a PlayerView (subclass of UIView) object from example "Putting all together": https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

Found the solution to this issue. Tick checkbox "Clip Subviews" in IB for the view with the layer you're going to attach the video player to. Then, set the AVLayerVideoGravityResizeAspectFill of your AVPlayerLayer object. If you don't have the view in IB but you're creating it programmatically, set its clipsToBounds property to YES.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM