Задать фрейм контроллера навигации, добавленного как дочерний контроллер вида
Я пытаюсь добавить 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);