0

不同我有具有的UITabBarController一個應用程序,並且當被按壓不同的標籤,我重寫viewWillAppear中,獲取到tabBarController的引用,然後調整其幀。這樣做的原因是一些選項卡需要屏幕的全高,而其他選項卡具有最高120像素的背景。定位是在應用程序啓動

我引用tabBarcontroller的方式是通過獲取應用程序委託和使用其參考tabBarController移動其位置:

MyAppDelegate *德爾= [UIApplication的sharedApplication] .delegate; del.tabBarController.view.frame = CGRectMake(0,120,320,360);選項卡之間切換時

這種方法效果很好,但在第一次應用程序加載了它古怪做的事情一點,我不能明白爲什麼。我的第一個選項卡實際上有一個NavigationBar,然後包含一個具有pickerView的視圖。第一次加載應用程序時,導航欄出現約10px太低,但pickerView仍然顯示在正確的位置。我希望我能解決這個問題通過區別對待的事情在第一時間viewWillAppear中被調用,但是如果我減少y位置來補償導航欄,它改變一切融合在一起,包括在視圖中的日期選擇器。

我想明白爲什麼應用程序的行爲不同首先裝載和希望有人能要麼這個給我解釋,並就如何解決問題,或者請點我在正確的方向上沒有任何想法時。我懷疑這是與狀態欄上的頂部,因爲這是關於作爲補償,我看到了同樣的尺寸..

任何幫助,將不勝感激! 感謝

回答

0

OK我已經想通了。如果有人感興趣,看起來在應用程序啓動時,UINavigationBar的幀具有10個像素的y位置。我所要做的就是將UINavigationBar的幀垂直位置設置回0像素,所有作品!任何人都需要做到這一點,下面的代碼:

self.navigationController.navigationBar.frame = CGRectMake(0,0,320,45) 

我打電話的方法viewWillAppear上面一行和所有工作正常。