iphone - 为创建的 UIToolbar 设置 UIToolbarPosition

标签 iphone objective-c ios ios5 uitoolbar

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

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

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

一切正常,但我正在寻找更多定制,所以我想知道 UIToolbarPosition 的用法,但我遇到了一些问题。使用 InterfaceBuilder 或以编程方式添加 UIToolbar 我将其定位在主视图的顶部 - 所以我希望将 UIToolbarPosition 设置为 UIToolbarPositionTop ,但从我正在测试的内容来看,它不会自动工作,也找不到任何允许我设置 UIToolbarPosition 的 API(是的,我已经用谷歌搜索过了)。

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

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

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

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

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

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

最佳答案

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

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

UIToolbar *tref = [/*工具栏创建代码*/];

总之,你的代码

[[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 是一个常量(因此您无法设置它)。

关于iphone - 为创建的 UIToolbar 设置 UIToolbarPosition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580638/

相关文章:

iphone - 按契约(Contract)为 Objective-C 设计?

ios - Objective-C 将 tableView indexPath 传递给另一个方法

ios - 自定义委托(delegate)不响应 iOS

ios - 值更改时快速重新加载 View

ios - 使用 KIF : beforeEach is called after my view controller is loaded? 进行功能测试

objective-c - uiview 的自动调整大小

iphone - 如何在 iPhone 中将 NSData 转换为字节数组?

ios - UITextField 键盘。如何禁用强制触摸?

ios - 如何缩放和更改父 View 的原点并在 subview 中实现?

ios - Visual Studio 2017 for Mac - iOS 模拟器启动但不运行应用程序