Интерфейс Builder: изменение размера из NIB

У меня есть пользовательский UIViewController и соответствующее представление в файле nib. Вид напрямую добавляется в UIWindow.

[window addSubview:customViewController.view];

Размеры окна и представления по умолчанию ( 480x320 и 460x320 соответственно).

Когда я создаю CustomViewController внутри файла nib и проверяю "Изменить размер из NIB" на вкладке IB Attributes, все работает отлично.

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

IB обрабатывает это с помощью "Изменить размер изображения с NIB" . Как эмулировать это программно?

Кажется, что IB использует некоторый пользовательский подкласс UIViewController. Итак, вопрос: как реализовано "Resize View From NIB"?

Ответ 1

Когда я хочу, чтобы представление охватывало весь экран, я делаю что-то вроде этого:

- (void) viewWillAppear: (BOOL) animated
{
    [super viewWillAppear:animated];
    [[self view] setFrame:[[UIScreen mainScreen] bounds]];
}

Чувствует себя как взлома, поэтому я делаю это только в крайнем случае, когда я не могу заставить мнение вести себя иначе:)