我的視頻(AVPlayer實例)在較小的「最小化」窗口中播放以啓動。觸摸屏幕以顯示控件,並允許用戶將其展開爲全屏幕,其中包含狀態欄。我給了這個的viewController其全畫幅:UIStatusBar +切換全幀視頻+旋轉=幀問題
[[UIScreen mainScreen] bounds]
不過的viewController仍然認爲狀態欄是存在的,即使我先隱藏:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]
所以視頻屏幕下方開始看不見的狀態欄,在(0,statusBarHeight)。如果我在控件可見的情況下旋轉設備(這會使狀態欄可見),問題依然存在。如果我在隱藏控件(並且狀態欄丟失)時旋轉設備,則所有內容都會自行修正,並且視頻窗口將按照預期在(0,0)處開始。
我的解決方案是在(0,-statusBarHeight)處啓動全屏視頻窗口,然後觀察沒有控件的旋轉,然後我可以將視頻窗口放回原點。呸。
當我最小化視頻回到原始大小,如果有沒有控制旋轉,視頻窗口將由(像素高度)像素過高。
所以另一個布爾值告訴我,當我最小化視頻時,如果我應該通過(0,+ statusBarHeight)更正它的「真實」位置。雙y。
如果在這一點上,我們旋轉設備,一切都很好。但是,如果我們立即將視頻最大化,那麼全屏視頻由(statusBarHeight)像素過高。三重愚蠢!
好吧,更多的布爾值,但這一切都複雜的事實,視頻引擎是一個單獨的框架,'控制應用程序'也有類似的問題.. AAH!
我以錯誤的方式解決這個問題嗎?它變得太複雜和脆弱。我知道(通過在野外查看其他應用程序),這是一個常見問題 - 我有一個顯示相同行爲的應用程序列表。有沒有更好的辦法?