我试图让父视图控制器显示子视图控制器的视图。我在父母的viewDidLoad
:
-(void)viewDidLoad
{
[super viewDidLoad];
// create child view controller
[self setMenuController:[[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil]];
[self addChildViewController:[self menuController]];
// move the child view down 30 pt
CGRect frame = [[[self menuController] view] frame];
frame.origin.y = 30;
[[[self menuController] view] setFrame:frame];
[[self menuController] setWantsFullScreenLayout:YES];
[[self view] addSubview:[[self menuController] view]];
[[[self menuController] view] setNeedsLayout];
}
子视图控制器的xib只是一个红色视图,中心部分透明UIImageView
(看重叠)。
如果我在application:didFinishLaunchingWithOptions:
中禁用状态栏,我会收到以下信息:
如果启用状态栏,我会:
使用状态栏,子控制器UIView
会自动调整,以便为状态栏的位置腾出空间(因为图像视图居中,最高点10点)和底部)。由于这是子视图,因此无论父级是否具有状态栏,它都应始终使用视图控制器视图的完整大小。有没有办法实现这个,除了将任何子视图调整为大20像素,或在子视图控制器中使用包装器视图?
答案 0 :(得分:-1)
尝试将frame设置为menuController的视图边界而不是其框架。另外,我不确定你是否想要setWantsFullScreen,这会导致视图低于状态栏。
编辑后:
尝试这样,看看是否有效。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self setMenuController:[[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil]];
[self addChildViewController:menuController];
[menuController didMoveToParentViewController:self];
menuController.view.frame = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y +30, menuController.view.frame.size.width, menuController.view.frame.size.height);
[self.view addSubview:menuController.view];
}