Задать фрейм контроллера навигации, добавленного как дочерний контроллер вида

Я пытаюсь добавить UINavigationController как дочерний контроллер представления, а затем дать ему меньший кадр, чем его родительский. Однако изменение кадра контроллера навигации не приводит к правильному изменению кадра контроллера корневого представления контроллера навигации.

В viewDidLoad

RootController *rootController = [[RootController alloc] init];
_navController = [[UINavigationController alloc] initWithRootViewController:rootController];
[rootController release];

[self addChildViewController:_navController];
[self.view addSubview:_navController.view];
[_navController didMoveToParentViewController:self];

Затем в viewWillAppear::

CGRect bounds = self.view.bounds;
bounds.origin.x = 20;
bounds.origin.y = 20;
bounds.size.width = bounds.size.width - 20;
bounds.size.height = bounds.size.height - 20;
_navController.view.bounds = bounds;

Пока панель навигации размещена правильно, белый фон корневого контроллера представления отсутствует. Что я делаю не так точно? Спасибо за вашу помощь. введите описание изображения здесь

1 ответ

Решение

Это на самом деле работает, если вы делаете это в viewDidLoad сразу после добавления дочернего контроллера представления к родительскому:

_navController.view.frame = CGRectInset(self.view.bounds, 20, 20);
Другие вопросы по тегам