Я нашел это: Подкласс UITabBarController для настройки своего кадра , который объясняет, как добиться того, к чему я стремился, в ответе.Чтобы перефразировать сообщение там, вы должны зарегистрироваться, чтобы получать уведомления об изменении выбранного представления TabBarController, а затем применять свою геометрию там.В противном случае он уносится TabBarController.
Я пытаюсь изменить размер своего UITabBarController, чтобы при появлении определенных задач отображалось сообщение с высоким статусом 20 пикселей.Любопытно, что если я перейду к методу, который изменяет размер TabBarController, происхождение фрейма изменится.
Когда вид появляется в первый раз, у источника UITabBarController устанавливается на 0. Даже если applicationatioinScreen y.origin равен 20. Если я изменяю размер при первой загрузке приложения, все выключено.Подвиды не меняются.После этого первого изменения размера, если я просматриваю другую вкладку, TabBarController подстраивается под правильный размер, и последующие вызовы моего метода изменения размера подтверждают это.
Вот как я устанавливаю UITabBarcontroller:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:[AppController getGroupViewControllerArray] animated:NO];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
return YES;
}
И вот как я изменяю размер TabBarController:
-(void)resizeTabToShowActivity {
CGRect newFrame = mainTabBarController.view.frame;
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
newFrame.origin.y = applicationFrame.origin.y + 20;
newFrame.size.height = applicationFrame.size.height - 20;
mainTabBarController.view.frame = newFrame;
}
Я заметил, что если я изменяю размернепосредственно после установки TabBarController в окне все работает отлично.В целях отладки я также переместил метод изменения размера в AppDelegate, но до сих пор не радуюсь.
Спасибо