调整 UINavigationController 的大小?

Posted

技术标签:

【中文标题】调整 UINavigationController 的大小?【英文标题】:Resizing UINavigationController? 【发布时间】:2011-05-24 04:13:12 【问题描述】:

我希望我的导航控制器只占据屏幕的一半。这可能吗?在 IB 中,当我拖动时,它会强制我填满整个屏幕,我无法调整它的大小。如果不可能,是否有替代方案? 谢谢。

【问题讨论】:

【参考方案1】:

您可以,但您只能在 ios 5 中执行此操作,因为当我尝试在 UINavigation 控制器中执行任何类型的直接视图操作而不是推送或弹出另一个视图控制器时。导航控制器不会显示它们。

这是你需要做的。

-(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];

另外,如果您的注册开发人员有一个关于视图控制器容器的非常好的视频,那可能对您有所帮助,来自去年的 WWDC。

【讨论】:

【参考方案2】:

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

@property (nonatomic, strong) IBOutlet UINavigationController *navController;

然后将这个 IBOutlet 连接到您的 xib 文件中的 navigationController。在同一个 xib 文件中,有一个连接到文件所有者的视图。在界面生成器中设置此视图的尺寸,以便在您的情况下仅填充一半屏幕。然后您将添加 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,以便它采用正在添加的视图的尺寸。将其添加为子视图不足以使视图调整大小。希望这会有所帮助!

【讨论】:

以上是关于调整 UINavigationController 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

调整 UINavigationController 的大小?

使用 UINavigationController setToolbarHidden:animated 时如何调整视图大小:

使用平移关闭 UINavigationController 调整 UINavigationBar 相对于顶部安全区域的大小

如何在 UITabBarViewController 内的 UINavigationController 内调整 UITableView 的大小?

UINavigationController 总是全屏不调整大小

当 UISplitViewController 旋转为纵向时,如何调整 UINavigationController 内容的大小