Objective c 调整UINavigationController的大小?

Objective c 调整UINavigationController的大小?,objective-c,cocoa-touch,ios,uinavigationcontroller,Objective C,Cocoa Touch,Ios,Uinavigationcontroller,我希望我的navigationcontroller只占据屏幕的一半。这可能吗?在IB中,当我拖动时,它迫使我填满整个屏幕,我无法调整它的大小。如果不可能,还有其他选择吗? 谢谢。您可以,但您只能在iOS 5中进行操作,因为当我尝试在iNavigation控制器中执行任何类型的直接视图操作时,都会按下或弹出另一个视图控制器。导航控制器不会显示它们 这是你需要做的 -(void)viewDidLoad { UINavigationController * navController = [

我希望我的navigationcontroller只占据屏幕的一半。这可能吗?在IB中,当我拖动时,它迫使我填满整个屏幕,我无法调整它的大小。如果不可能,还有其他选择吗?
谢谢。

您可以,但您只能在iOS 5中进行操作,因为当我尝试在iNavigation控制器中执行任何类型的直接视图操作时,都会按下或弹出另一个视图控制器。导航控制器不会显示它们

这是你需要做的

-(void)viewDidLoad {
     UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:[[UIViewController alloc] initWithNibName:nil bundle:nil]];
     //Used to recieve callbacks (like shouldAutorotateToInterfaceOrientation:)
     [self addChildViewController:navController];
     //View manipulation
     navController.view.frame = CGRectInset(navController.view.frame, 20, 20);
     [self.view addSubview:navController.view];
     //Calls all the standard methods (viewDidLoad,viewDidUnload,etc.)
     [navController didMoveToParentViewController:self];
}

此外,如果您是一名注册开发人员,在view controller容器上有一个非常好的视频,这可能对您有所帮助,从去年的WWDC开始。

根据您所写的内容,我假设您的头文件中有一个@property。比如:

@property(非原子,强)ibuinavigationcontroller*navController

然后将此IBOutlet连接到xib文件中的navigationController。在同一个xib文件中,有一个连接到文件所有者的视图。在interface builder中设置此视图的尺寸,以便在您的情况下仅填充一半屏幕。然后,您将添加navController作为此视图的子视图。如果在navController的xib文件中也添加了viewController,则在viewDidLoad中执行以下操作:

-(void)viewDidLoad {
     [self addChildViewController:self.navController];
     [self.view addSubview:self.navController.view];
     [self.navController didMoveToParentViewController:self];
}
否则,如果以编程方式设置rootviewcontroller,请执行以下操作:

-(void)viewDidLoad {
      self.navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];
      [self addChildViewController:self.navController];
      [self.view addSubview:self.navController.view];
      [self.navController didMoveToParentViewController:self];
}
您必须将self.navController添加为childViewController,以便它将采用添加到的视图的尺寸。将其添加为子视图不足以调整视图的大小。希望这有帮助