Положение представления отличается при запуске приложения - PullRequest
0 голосов
/ 05 февраля 2012

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

Я хотел бы понять, почему приложение ведет себя по-разному при первой загрузке, и надеялся, что кто-нибудь может мне это объяснить и с любыми идеями о том, как решить проблему, или указать мне правильное направление. Я подозреваю, что это как-то связано со строкой состояния наверху, так как она примерно того же размера, что и смещение, которое я вижу ..

Любая помощь будет оценена! спасибо

1 Ответ

0 голосов
/ 08 февраля 2012

ОК, я понял это.Если кому-то интересно, похоже, что при запуске приложения фрейм UINavigationBar имеет позицию 10 пикселей.Все, что мне нужно было сделать, это установить вертикальное положение кадра UINavigationBar обратно на 0 пикселей, и все работает!Любой, кому нужно это сделать, вот код:

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

Я вызываю вышеуказанную строку в методе viewWillAppear, и все работает, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...