我有一個似乎與iOS6一起出現的導航欄定位問題。
它的作用在類似proplem旋轉的一些看法導航欄在添加狀態欄後不重新定位
的應用程序有一個閃屏時,一些用戶遇到許多方面,全屏顯示(實現通過設置Hide statusbar during application launch
到True
)在
然後在viewDidLoad
我主視圖控制器下面一行添加了狀態欄返回到應用程序:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
這增加了狀態欄的應用程序,如預期向下移動視圖20pt。 但是,NavigationBar保持放置在StatusBar下方,下方有20pt毛刺。
iOS6的以前我用過的加入以下代碼行來解決這個問題:
[UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20);
然而現在,這不工作。
一些研究表明,在致電viewDidLoad
時,keyWindow.frame
的大小和來源均爲{0,0},並且改變它不起作用。
將上述兩行插入到viewDidAppear
時,我會在應用程序啓動時獲得相同的行爲。然後,當我移動到另一個視圖並返回到第一個視圖時,keyWindow.frame
的更改具有預期效果,並且NavigationBar最終位於它應該位於的位置。
我的問題是:如何在StatusBar最初隱藏時將StatusBar添加到iOS應用後使NavigationBar獲得正確的位置?
試過了。 Samme對所有視圖都有影響[Will | Did] [Appear | Load]方法。 – mariusnn 2013-02-08 13:45:33
奇怪,我有完全相同的問題和[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]工作,但只能從viewWillAppear – elk 2013-02-08 13:56:27
你知道;這是我再次愚蠢/疲憊。由於'setStatusBarHidden:NO'仍然處於'wiewDidLoad'方法中,所以後續調用的行爲不同。我得到的東西的唯一的地方是'viewDidAppear',並且只有兩個調用(因爲在任何調用中添加statusBar時視圖的框架都沒有調整,並且只有最後一個調用響應才被觸發(' viewDidAppear')。 – mariusnn 2013-02-08 14:01:27