自定义UIToolBar的正确方法是什么?

时间:2013-04-28 14:11:32

标签: ios uinavigationcontroller uitoolbar

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

选项A

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

选项B

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

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

这是工具栏的形状:

enter image description here

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

选项A意味着我不需要在UIToolBar的位置进行锻炼,因为a)如果我显示或隐藏了navigationBar,这会将所有内容垂直向上/向下移动,这对于确定UIToolbar的位置是一个挑战。 iPhone 5具有额外的垂直空间 - 我不能使用autolayout,因为我支持iOS 5,我还没有真正弄清楚如何使用自动调整掩码。我使用硬编码的“魔法”数字。

1 个答案:

答案 0 :(得分:3)

我不会做其中任何一种。

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

因此,不要试图强迫UIToolbar做一些从未设计过的事情,而只是创建一个包含背景图像的简单视图(其中一部分将是透明的)。在视图中放置一些基于图像的UIButton,并将其称为一天。创建一个代表工具栏的自定义UIView子类并不是一个坏主意,这样所有的设置都可以很好地打包在一个地方,这样你就可以在多个视图中重用工具栏了。如果需要的话。 p>