如何使 UINavigationController 中的 UIToolbar 更高?

Posted

技术标签:

【中文标题】如何使 UINavigationController 中的 UIToolbar 更高?【英文标题】:How can I make a UIToolbar from a UINavigationController taller? 【发布时间】:2012-11-11 23:44:06 【问题描述】:

我有一个 UINavigationController,在屏幕顶部有一个 UINavigationBar,在底部有一个 UIToolbar。我想让工具栏高一点。这是我的代码:

CGRect toolbarFrame = self.navigationController.toolbar.frame;
toolbarFrame.size.height += 20;
toolbarFrame.origin.y -= 20;
self.navigationController.toolbar.frame = toolbarFrame;

[self setToolbarItems:@[myButton]];
self.navigationController.toolbarHidden = NO;

这似乎应该可以工作并且不会产生任何错误/警告,但工具栏的大小保持默认值。

有没有办法改变 UINavigationController 的 UIToolbar 的大小,或者我应该为此制作一个自定义 UIToolbar?

【问题讨论】:

来自UINavigationControllerAccess to this toolbar is provided solely for clients that want to present an action sheet from the toolbar. You should not modify the UIToolbar object directly.的文档 @Paul.s 我以为他们指的是更深入/更多功能的变化,而不是简单地弄乱外观。不过,再读一遍,你可能是对的。他们没有具体说明。谢谢:) 【参考方案1】:

我已经尝试了您的代码,只是调整了您的代码顺序。它会起作用的:

[self setToolbarItems:@[myButton]];
self.navigationController.toolbarHidden = NO;

CGRect toolbarFrame = self.navigationController.toolbar.frame;
toolbarFrame.size.height += 20;
toolbarFrame.origin.y -= 20;
self.navigationController.toolbar.frame = toolbarFrame;

我认为这是因为setToolbarItems 会调整工具栏的外观。所以你首先需要做其他与初始化相关的事情。然后调整它的外观(比如改变它的框架。)

【讨论】:

在 2019 年像魅力一样工作 :)

以上是关于如何使 UINavigationController 中的 UIToolbar 更高?的主要内容,如果未能解决你的问题,请参考以下文章

将 managedObjectContext 发送到 viewController 崩溃

ID:[...] 的 NSManagedObject 已失效

在 UINavigationController 中设置时图像不显示

UINavigationController - 何时释放推送的视图控制器等

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

为啥我似乎必须在 iOS 应用程序委托中键入 window.rootViewController?