При выборе UIViewController в UITabBarController изменяется рамка просмотра - PullRequest
1 голос
/ 26 сентября 2011

Насколько мне известно, у меня странная проблема.Дело в том, что кадр представления UIVIewController изменяется, когда он впервые отображается в UITabBarController.

Я попытаюсь описать свою архитектуру.У меня есть класс, который является подклассом UITabController.Внутри этого класса я создаю 3 UIViewController (A, B, C) и затем помещаю их в массив viewControllers UITabBarController.selectedIndex для UITabBarController установлен в 0, поэтому A является первым отображаемым.Все выглядит нормально с точки зрения А. Но когда я переключаюсь на второе представление B или третье представление C, каждый кадр подпредставления как-то нарушается.Размеры и позиции изменены.

i NSLog фреймы UIViewControllers (A, B, C) перед добавлением их в массив viewControllers UITabBarController и результат (0,20,320,460).В настоящий момент они отображаются, их рамка изменяется на (0,0,320,411).Но ViewControlles A по-прежнему отображается нормально.Два других нет: S

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Нужно было бы увидеть некоторый код, чтобы точно знать, в чем проблема, но в то же время вам нужно настроить подпредставления в методе viewWillAppear вашего viewController и использовать BOOL, чтобы убедиться, что они когда-либо настраиваются только один раз (не каждый раз, когда вызывается метод viewWillAppear). Это должно убедиться, что подпредставления соответствуют правильному кадрированию.

-(void)viewWillAppear {
if (!viewWasAlreadySetUpBOOL) {
//setup all the views
viewWasAlreadySetUpBOOL = YES;
}
}
0 голосов
/ 27 сентября 2011

Имеет смысл, что высота вашего кадра может измениться после добавления представлений в массив tabBar. Высота стандартного tabBar составляет 49 пикселей, что является разницей в значениях высоты, которые вы видите в своих журналах. Это имеет смысл, поскольку каждый вид настраивается в соответствии с доступным размером экрана, за вычетом размера панели вкладок.

Как вы настраиваете свои представления, программно или IB? Какие размеры вы используете? Если вы настраиваете свои фреймы, либо программно, либо через IB, но не принимая во внимание смещение от вкладки, это может привести к тому, что ваши представления будут размещены. Было бы полезно увидеть некоторый код, но без него я бы посоветовал проверить, как вы настраивали свои фреймы для панели вкладок.

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