3

我正在编写仅针对 iOS5 设备的应用程序,因此我正在尝试最大限度地使用新appearanceAPI。

我可以UIToolbar用以下方法改变我的背景:

[[UIToolbar appearance] setBackgroundImage:<myImage> forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

一切正常,但我正在寻找更多的定制,所以我想知道使用UIToolbarPosition并遇到了一些问题。使用 InterfaceBuilder 或以UIToolbar编程方式添加我将它定位在主视图的顶部 - 所以我希望UIToolbarPosition设置UIToolbarPositionTop为设置UIToolbarPosition(是的,我已经用谷歌搜索过了)。

所以 - 主要问题 - 如何UIToolbar正确创建和标记它,所以它只能响应UIToolbarPositionTopor UIToolbarPositionBottom,所以我可以使用:

[[UIToolbar appearance] setBackgroundImage:<myImage_1> forToolbarPosition:UIToolbarPositionTop barMetrics:UIBarMetricsDefault];

[[UIToolbar appearance] setBackgroundImage:<myImage_2> forToolbarPosition:UIToolbarPositionBottom barMetrics:UIBarMetricsDefault];

编辑:按要求提供更多详细信息。

我的应用程序中有多个工具栏 - 例如,在 2 个屏幕上位于屏幕顶部的工具栏、充当键盘辅助视图的工具栏和位于模态屏幕底部的 2 个工具栏。我想最大限度地使用新的外观 API,而不是在每个屏幕上自定义工具栏,因此我在询问整个 UIToolbarPosition 的事情以及如何使用它。

我知道我可以通过分别自定义每个 UIToolbar 来实现我想要的,但我只是对新的 API 和 UIToolbarPosition 的使用感到好奇。

4

1 回答 1

2

UIToolbarPostion不是您应该以编程方式设置的属性 - 相反,它允许您告诉程序如何处理位于不同位置的工具栏。这主要用于因屏幕变化(自动旋转)而被推动的工具栏,或者位于具有可变内容的导航控制器之类的东西上。

话虽如此,如果您想直接访问您的工具栏以便您可以使用它们/设置属性/等,有几种方法。听起来您知道标签是什么,这是一种有效的方法 - 只需在 IB 中或以编程方式为工具栏提供一个标签(在 IB 的侧栏中编辑标签属性或.tag在声明工具栏时使用该属性)。然后您可以使用该viewWithTag方法访问您的工具栏。但是,更好的方法是通过控制从工具栏拖动到头文件来为工具栏创建一个 IB 属性(与标签或按钮相同)。然后你就可以写了[nameOfToolbarProperty doSomeMethod]。如果您正在使用代码创建工具栏,那么只需以相同的方式引用它,例如

UIToolbar *tref = [/*toolbar creation code*/];

总之,您的代码

[[UIToolbar appearance] setBackgroundImage:<myImage_1> forToolbarPosition:UIToolbarPositionTop barMetrics:UIBarMetricsDefault];

可以通过添加来工作

//Connect this to your toolbar in Interface Builder
@property (weak, nonatomic) IBOutlet UIToolbar *tref;

到你的标题。然后就做

 [tref setBackgroundImage:<myImage_1> forToolbarPosition:UIToolbarPositionTop barMetrics:UIBarMetricsDefault];

请注意,这只是告诉程序如果工具栏位于顶部位置时要显示什么图像 - 它不会设置工具栏的位置。UIToolbarPosition是一个常数(所以你不能设置它)。

于 2012-07-23T12:26:00.647 回答