Позиционирането на изгледа е различно при стартиране на приложението

Имам приложение, което има 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, за да компенсирам лентата за навигация, тя измества всичко заедно, включително инструмента за избор на дата в изгледа.

Бих искал да разбера защо приложението се държи по различен начин при първото зареждане и се надявах някой да може или да ми обясни това и с някакви идеи как да разреша проблема, или моля, да ме насочи в правилната посока. Подозирам, че това има нещо общо с лентата на състоянието отгоре, тъй като това е приблизително със същия размер като отместването, което виждам.

Всяка помощ ще бъде оценена! Благодаря


person MichaelGois    schedule 05.02.2012    source източник


Отговори (1)


Добре разбрах го. Ако някой се интересува, изглежда, че при стартиране на приложението рамката на UINavigationBar има y позиция от 10 пиксела. Всичко, което трябваше да направя, беше да настроя вертикалната позиция на рамката на UINavigationBar обратно на 0 пиксела и всичко работи! Всеки, който трябва да направи това, ето кода:

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

Извиквам горния ред в метода viewWillAppear и всичко работи според очакванията.

person MichaelGois    schedule 07.02.2012