自定义 UIToolBar 的正确方法是啥?

Posted

技术标签:

【中文标题】自定义 UIToolBar 的正确方法是啥?【英文标题】:What is the correct approach for a custom UIToolBar?自定义 UIToolBar 的正确方法是什么? 【发布时间】:2013-04-28 14:11:31 【问题描述】:

在尝试创建自定义* UIToolbar 时是否更好 - 在不被 Apple 商店拒绝的意义上更好:

选项 A

将超大中间按钮作为 UIButton 添加到 self.navigationController.view 这是关键,因为我正在向 navigationController 添加 UIButton,这似乎与苹果文档相矛盾 使用 UIToolbar 外观实现自定义背景

选项 B

创建一个 UIToolbar 并将其添加为 UINavigationController 中当前 ViewController 的子视图 在 UINavigationController 中添加 UIButton 作为当前 ViewController 的子视图 使用UIToolBar的setBackgroundImage方法添加自定义背景

*自定义背景,超大中间按钮

这是工具栏的形状:

额外细节:此应用适用于 ios 5.X 或更高版本。它使用 UINavigationController。关键挑战是应用程序的一部分根据应用程序的状态隐藏/显示导航栏。

选项 A 意味着我不必确定 UIToolBar 的放置位置,确定 UIToolbar 的放置位置是一个挑战,因为 a) 如果我显示或隐藏导航栏,这会垂直向上/向下移动所有内容 b ) 带有额外垂直空间的 iPhone 5 - 我不能使用自动布局,因为我支持 iOS 5,而且我还没有真正弄清楚如何使用自动调整大小的蒙版。我使用的是硬编码的“神奇”数字。

【问题讨论】:

【参考方案1】:

这两种我都不会。

UIToolbar 当你想做它的时候很好,它允许一些基本的自定义。但在这种情况下,您需要一个类似工具栏的视图,它以 UIToolbar 似乎不允许的方式绘制自身。您可能确切地知道要在“工具栏”中显示哪些项目,并且您不太可能需要处理任意分类的 UIBarItem。

因此,与其让自己头疼地试图强迫 UIToolbar 做一些它从未设计过的事情,不如创建一个包含背景图像的简单视图(其中一部分将是透明的)。在视图中放置一些基于图像的 UIButtons,然后收工。创建一个自定义 UIView 子类来表示您的工具栏并不是一个坏主意,这样所有设置都可以很好地打包在一个地方,这样您就可以在需要时在多个视图中重用工具栏。

【讨论】:

感谢您抽出宝贵时间回复。我会尝试这种方法。有关确保此自定义视图始终位于屏幕底部的任何提示?由于显示/隐藏导航栏并在视图之间来回切换,我在尝试将其保持在 UINavigationController 底部时遇到了挑战。以及 4 英寸视网膜屏幕高度。 使用 UIToolBar 的一个好处是,您可以使用 UIToolBar 和 initWithBarButtonSystemItem 的 setItems 功能来安排按钮,而不必担心自己安排按钮。这不是让 UIToolBar 更受青睐吗?

以上是关于自定义 UIToolBar 的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

以foursquare方式自定义UIToolBar

为此任务编写自定义 AccumulatorParam 的正确方法是啥?

使自定义 .NET 异常可序列化的正确方法是啥?

Rails 6 - 加载自定义 JS 文件的正确方法是啥?

将自定义组件添加到反应式表单的 FormGroup 的正确方法是啥?

实现复杂的自定义视图控制器的正确方法是啥