为所创build的UIToolbar设置UIToolbarPosition

我正在编写仅针对iOS5设备的应用程序,因此我正试图最大限度地利用新appearance API。

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

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

一切工作正常,但我正在寻找更多的定制,所以我想知道UIToolbarPosition用法,我遇到了一些问题。 使用InterfaceBuilder或以编程方式添加UIToolbar我将其定位在主视图的顶部 – 所以我期待UIToolbarPosition被设置为UIToolbarPositionTop ,但是从我testing它不能自动工作,也不能find任何API允许我设置UIToolbarPosition (是的,我已经Googlesearch了)。

所以 – 主要问题 – 如何创buildUIToolbar并正确标记,所以它只能响应UIToolbarPositionTopUIToolbarPositionBottom ,所以我可以使用:

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

编辑:更多细节,如问。

我的应用程序中增加了多个工具栏,例如,两个屏幕上的屏幕顶部的工具栏,作为键盘附件视图的工具栏和模态屏幕底部的2个工具栏。 我想最大限度地利用新的外观API,而不是在每个屏幕上自定义工具栏,因此我问了整个UIToolbarPosition的东西,以及如何使用它。

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

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

这就是说,如果你想直接访问你的工具栏,以便你可以使用他们/设置属性/等有几个方法。 这听起来像你知道什么标签是,这是一个有效的方法 – 只需在IB或以编程方式给工具栏一个标签(或者编辑边栏的标签属性为IB或当您声明工具栏时使用.tag属性) 。 然后,您可以使用viewWithTag方法来访问您的工具栏。 但是,更好的方法是通过控件拖动到工具栏的头文件中来创build工具栏的IB属性(与标签或button相同)。 那么你可以写[nameOfToolbarProperty doSomeMethod] 。 如果你用代码创build你的工具栏,那么就用同样的方法来引用它

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是一个常量(所以你不能设置它)。