设置 UINavigationController 框架不会改变外观

Posted

技术标签:

【中文标题】设置 UINavigationController 框架不会改变外观【英文标题】:Setting UINavigationController Frame Does Not Alter Appearance 【发布时间】:2012-06-20 14:46:45 【问题描述】:

好的,所以我有一个 UINavigationController,我正在我的 viewDidLoad 中设置它的框架。

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 586, 44)];

加载视图后,NavigationController 仍处于其全宽 1024

当视图出现时:

直到我在导航控制器上push 某些东西才会将其框架更新为586

推送或弹出后:

注意:调用[... setNeedsDisplay]; 并不能解决问题,[... setAutoresizingMask:UIViewAutoresizingNone]; 也一样

对于为什么最初不是这样或如何重绘它有什么想法吗?

【问题讨论】:

您是否尝试在 viewWillAppear: 中调整其大小而不是 viewDidLoad? @KevinHorgan — 不幸的是,我已经尝试过这种方法。好像没用。 首先,您实际上重新调整了导航控制器导航栏框架的大小,而不是控制器本身。我认为您可能想要调整导航控制器视图的大小。 【参考方案1】:

我认为您不能直接更改框架,您应该自定义导航栏

【讨论】:

以上是关于设置 UINavigationController 框架不会改变外观的主要内容,如果未能解决你的问题,请参考以下文章

设置所有 uinavigationcontroller 的高度

UINavigationController如何设置标题

设置 UINavigationController 框架不会改变外观

无法在 UINavigationController 上设置后退按钮

使用 UINavigationController 时 UIStackView 无法设置底部约束

UINavigationController 如何在子视图中设置标题等