UIViewController или UINavigationController устанавливают размер своего представления? - PullRequest
5 голосов
/ 19 октября 2011

У меня есть несколько UIViewController, загруженных через UINavigationController, где я переопределяю loadView и настраиваю отображение для отображения.У меня проблемы с настройкой фреймов некоторых подпредставлений и, возможно, самого представления.Я думаю, что либо UINavigationController, либо UIViewController могут заставить его представление заполнять экран при отображении.

Мне интересно, если и / или когда установлен размер представления.И если это происходит, задает ли он фрейм представления или делает это по-другому.

Спасибо.

Обновление: я только что заметил, работая над этим, я делаюновый UINavigationController, с этим методом loadView:

- (void)loadView
{
  UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 10.0f, 10.0f)];
  [view setBackgroundColor:[UIColor redColor]];
  self.view = view;
  [view release];
}

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

Ответы [ 2 ]

9 голосов
/ 19 октября 2011

UINavigationController будет автоматически изменять размер представления ViewController при нажатии. Из документов:

pushViewController: анимированный:

Объект в параметре viewController становится контроллером вида сверху в стеке навигации. Нажатие контроллера представления приводит к отображению представления, которым он управляет. Способ отображения этого вида определяется анимированным параметром. Если анимированный параметр - ДА, представление анимируется в позицию; в противном случае вид просто отображается на месте. Размер представления автоматически изменяется, чтобы поместиться между панелью навигации и панелью инструментов (если имеется), прежде чем он отобразится.

Если вы хотите, чтобы представление меньшего размера отображалось, вам придется создать контейнер и сделать его дочерним элементом представления вашего VC, задав размер вручную. Маска авторазмера может быть установлена ​​правильно, в зависимости от того, как вы создаете представление.

3 голосов
/ 19 октября 2011

Рамка для UIViewControllers становится меньше, потому что UINavigationController управляет видом, добавляя UINavigationBar, размер которого составляет 44.0f.

Размер изменяется, потому что вы заменяете представление на self.view = view; Если бы вы использовали addSubview:, вместо этого он бы сохранил свой первоначальный размер logancautrell объяснил, когда и почему.

...