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