[英]Setting AVPlayerLayer VideoGravity works on Simulator, not on iPad
我目前正在使用AVPlayer Framework為流內容開發視頻播放器。 我偶然發現了AVPlayerLayer的VideoGravity String-Property,它允許我將玩家縮放/調整模式設置為不同的值。
為了向用戶提供默認播放器中已知的縮放功能,我設置了一個執行以下代碼的方法:
AVPlayerLayer *layer = (AVPlayerLayer *)[self.videoContainer layer];
if([layer.videoGravity isEqualToString:AVLayerVideoGravityResizeAspect])
layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
else
layer.videoGravity = AVLayerVideoGravityResizeAspect;
這在模擬器中運行得很好,但不知何故不能在安裝了iOS 5.0.1的iPad 2上運行。
有沒有人遇到類似的問題? 這是一個已知的iOS Bug 5.0.1嗎? 有沒有更好的方法來實現AVPlayerLayer的縮放/調整大小?
任何想法/提示/幫助和建議都非常感謝,
謝謝,
山姆
設置邊界將在內部setNeedsLayout
。 如果你只改變引力,你必須稱之為自己。 調用setNeedsDisplay
強制重新繪制也不會有任何影響,盡管我認為AVPlayerLayer正在頻繁更新圖層內容以至於無關緊要。
編輯:你的名字是我的兩倍!
我終於通過以下方式交換上述聲明來解決我的問題...
if (self.player.status == AVPlayerStatusReadyToPlay) {
if([((AVPlayerLayer *)[self.videoContainer layer]).videoGravity isEqualToString:AVLayerVideoGravityResizeAspect])
((AVPlayerLayer *)[self.videoContainer layer]).videoGravity = AVLayerVideoGravityResizeAspectFill;
else
((AVPlayerLayer *)[self.videoContainer layer]).videoGravity = AVLayerVideoGravityResizeAspect;
((AVPlayerLayer *)[self.videoContainer layer]).bounds = ((AVPlayerLayer *)[self.videoContainer layer]).bounds;
}
將AVPlayerLayer的邊界設置為AVPlayerLayer的邊界似乎可以解決問題。 雖然我不明白為什么。
然而:歡呼工作解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.