2014-03-24 58 views
0

我有一個UITabBarController,它有四個選項卡。其中一個選項卡打開我的結果屏幕(一個UITableViewController)。使用Autolayout,無法將導航欄向下移動20px

在顯示此屏幕時,我想將UINavigationBar向下移動20px(以便爲顯示在所有屏幕上的自定義UIStatusBar騰出空間)。

在我的所有其他屏幕,我的一些代碼添加到viewWillAppear中方法來改變self.navigationController.navigationBar.frame.origin.y至20

,但這些都是「非root」屏幕(即用後退按鈕推動視圖)。

但是,在此屏幕上,即使它是根視圖,UINavigationBar也必須初始可見。我使用相同的代碼,但不會將視圖向下移動。

我假設autolayout將其移回位置,因此我嘗試將此代碼添加到viewWillLayoutSubviews和viewDidLayoutSubviews中。但是當我這樣做時,導航欄不會下移,直到第一次滾動tableview爲止。

在屏幕出現之前,我需要做些什麼來強制導航條向下移動(並保持下來)?

回答

0

你在使用故事板嗎?在故事板設定Y到20,讓您的視圖控制器實現UINavigation欄,然後添加以下代碼:

-(UIBarPosition)positionForBar:(id<UIBarPositioning>)bar{ 
     return UIBarPositionTopAttached; 

} 

這將告訴應用程序,導航欄將被連接,它將保持在20像素,但延長的背景一路向上..所以基本上它看起來像是在= 20。