Имам приложение, което има UITabBarController и когато се натискат различни раздели, отменям viewWillAppear, получавам препратка към tabBarController и след това преоразмерявам рамката му. Причината за това е, че някои раздели изискват цялата височина на екрана, докато други раздели имат фон в горните 120 пиксела.
Начинът, по който препращам към tabBarcontroller, е като получа делегата на приложението и използвам неговата препратка към tabBarController, за да преместя позицията му:
MyAppDelegate *del= [UIApplication sharedApplication].delegate; del.tabBarController.view.frame = CGRectMake(0,120,320,360);
Този метод работи добре при превключване между раздели, но при първото зареждане на приложението прави нещата малко странно и не мога да разбера защо. Първият ми раздел всъщност има NavigationBar и след това съдържа изглед, който има pickerView. Първият път, когато моето приложение се зареди, NavigationBar изглежда с около 10px твърде ниско, но pickerView все още се показва в правилната позиция. Надявах се, че мога да заобиколя това, като третирам нещата по различен начин при първото извикване на viewWillAppear, но ако намаля позицията y, за да компенсирам лентата за навигация, тя измества всичко заедно, включително инструмента за избор на дата в изгледа.
Бих искал да разбера защо приложението се държи по различен начин при първото зареждане и се надявах някой да може или да ми обясни това и с някакви идеи как да разреша проблема, или моля, да ме насочи в правилната посока. Подозирам, че това има нещо общо с лентата на състоянието отгоре, тъй като това е приблизително със същия размер като отместването, което виждам.
Всяка помощ ще бъде оценена! Благодаря