6

我试图添加一个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;

虽然导航栏放置正确,但根视图控制器的白色背景却没有。我到底在做什么错?谢谢你的帮助。 在此处输入图像描述

4

1 回答 1

9

viewDidLoad如果您在将子视图控制器添加到父视图控制器后立即执行此操作,它实际上会起作用:

_navController.view.frame = CGRectInset(self.view.bounds, 20, 20);
于 2012-11-25T22:56:55.680 回答