设置AVPlayerLayer VideoGravity适用于模拟器,而不适用于iPad

sam*_*sam 8 objective-c ios avplayer

我目前正在使用AVPlayer Framework为流内容开发视频播放器.我偶然发现了AVPlayerLayer的VideoGravity String-Property,它允许我将玩家缩放/调整模式设置为不同的值.

为了向用户提供默认播放器中已知的缩放功能,我设置了一个执行以下代码的方法:

AVPlayerLayer *layer = (AVPlayerLayer *)[self.videoContainer layer];

if([layer.videoGravity isEqualToString:AVLayerVideoGravityResizeAspect])
    layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
else 
    layer.videoGravity = AVLayerVideoGravityResizeAspect;
Run Code Online (Sandbox Code Playgroud)

这在模拟器中运行得很好,但不知何故不能在安装了iOS 5.0.1的iPad 2上运行.

有没有人遇到类似的问题?这是一个已知的iOS Bug 5.0.1吗?有没有更好的方法来实现AVPlayerLayer的缩放/调整大小?

任何想法/提示/帮助和建议都非常感谢,

谢谢,

山姆

Sam*_*Sam 21

在内部设置边界setNeedsLayout.如果你只改变引力,你必须称之为自己.setNeedsDisplay强制重新绘制的调用也不会受到影响,尽管我认为AVPlayerLayer正在频繁更新图层内容以至于无关紧要.

编辑:你的名字是我的两倍!