UIToolbar 上可更新的自定义视图

Posted

技术标签:

【中文标题】UIToolbar 上可更新的自定义视图【英文标题】:Updatable, custom view on a UIToolbar 【发布时间】:2011-04-24 07:20:44 【问题描述】:

我想在UIToolbar 中间创建一个小区域来展示一些信息,并且想知道最好的方法是什么。

我需要显示一些文本和图形,当新信息到达时,两者都需要更新(大约每 3 秒一次)。该图形类似于 iPhone 信号强度指示器,因此可以自定义绘制或从 3 个图形(低、中、高强度)之一中选择。

我可能会使用initWithCustomView: 创建一个UIBarButtonItem,尽管我希望视图是可点击的(以允许用户更改显示的信息)。

制作该视图的最佳方式是什么?我可以使用笔尖,还是需要在视图中进行自定义绘图?更新按钮的最佳方法是什么?我假设我每次都必须重新制作toolbarItems 数组,并在信息更改时设置它。有没有更清洁的方法来做到这一点?谢谢。

【问题讨论】:

【参考方案1】:

使用initWithCustomView: 听起来不错。您可以通过任何方式创建自定义视图:使用 NIB、绘制它,甚至使用图像。它也可以有自己的子视图。它可以是任何继承自 UIView 的对象。 (因此,如果您愿意,您甚至可以通过使用 UIButton、自定义 UIControl 或附加了手势识别器的自定义 UIView 使其可操作。)

如果您只保留指向自定义视图 UIBarButtonItem 的指针,则不必重新制作工具栏项(或者,就此而言,在添加所有按钮项后对其进行任何操作)。它可能是一个实例变量。然后,要更新自定义视图,您可以像访问任何其他视图一样访问它。我从来没有真正尝试过这个,但我看不出这样做有什么问题。

你听起来好像大部分都想通了。希望这会有所帮助。

【讨论】:

谢谢,很有帮助。我最终编写了一个小型测试应用程序,它创建了一个带有标签和图像的视图,并使用initWithCustomView: 将其放入。它运行良好,并且可以通过与视图的连接进行更新。我正在将其制成带有 NIB 文件的自定义视图控制器以简化操作。【参考方案2】:

我需要相同的解决方案,并希望您能提供一些代码示例。所以我最终在 IB 中完成了这一切,步骤如下:

    在 IB 中创建没有项目的 UItoolbar。 (添加 UIView 后会再次添加 Bar Button Item) 将 UIView 添加为 UIToolbar 的子视图 将 UILabel 添加到 UIView 的子视图中,该子视图已经是 UIToolbar 的子视图。 从 UIToolbar、UIView 和每个 UILabel 创建 IBOutlets,然后您可以在应用中引用标签。 我确实将背景设置为 clearColor,因此文本显示在 UIToolbar 的顶部,没有任何框或边框。 文本会动态更新,这是预期的结果。

希望这对某人有所帮助,因为这一直困扰着我。

【讨论】:

以上是关于UIToolbar 上可更新的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

集合视图的自定义布局不更新

如何使用来自另一个活动的自定义适配器更新列表视图?

使用 ObservedObject 更新文本,但不是我的自定义视图

UIToolbar xib xcode

在不覆盖全屏的 UIViewController 中模态显示 UIViewController

ListView 不使用自定义视图更新大小