我正在使用MonoTouch中AV Foundation的AVPlayer API開發視頻播放器(但Objective-C中的解決方案也可能不錯)。我正在嘗試實現全屏模式。全屏:調整其父視圖時未調整AVPlayerLayer的尺寸
要顯示的視頻幀,我有一個UIView(讓我們稱之爲回放視圖)其中I添加AVPlayerLayer作爲播放視圖層的子視圖:
UIView *playbackView = ...
AVPlayerLayer *playerLayer = ...
[playbackView.layer addSublayer:playerLayer];
層屬性被設置這樣的:
playerLayer.needsDisplayOnBoundsChange = YES;
playbackView.layer.needsDisplayOnBoundsChange = YES;
確保在播放視圖大小發生變化時調整大小。最初,回放視圖具有座標(0,0,320,180)(僅顯示在UI的頂部)。然後,我通過將播放視圖幀大小設置爲窗口大小來製作全屏動畫:
playbackView.frame = playbackView.window.bounds;
它工作正常。播放視圖現在正在填充所有窗口(設置背景顏色以查看它)。但是我的AVPlayerLayer仍然像以前在非全屏模式下一樣停留在視圖的頂部。
爲什麼AVPlayer圖層沒有根據回放視圖新尺寸調整大小?我是否也需要在AVPlayerLayer上製作動畫? setNeedsLayout,layoutSubviews(它似乎沒有改變什麼...)的刷新?刪除AVPlayerLayer並再次添加它?
一種解決方案是也以調整根據層幀播放視圖幀(playerLayer.frame = playbackView.frame)。但是,如果我們這樣做,圖層不是動畫,而是直接顯示最終大小。我們如何能夠改變這種變化?使用核心動畫而不是UIView動畫? – nicolas 2012-03-02 07:55:33