【问题标题】:using a subclass of UITableViewCell in IB - Why is there a need to override drawRect:?在 IB 中使用 UITableViewCell 的子类 - 为什么需要覆盖 drawRect:?
【发布时间】:2012-02-13 11:48:35
【问题描述】:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW12

关于子类化UITableViewCell,上面的链接谈到需要覆盖drawRect: 以显式绘制单元格内容。

但为什么这是必要的?我们能否不只是在 IB 中创建 UITableViewCell 的子类,在 IB 中添加所需的子视图,创建所需的出口连接,然后以编程方式设置这些子视图的值。

为什么需要覆盖drawRect:?

【问题讨论】:

    标签: iphone uitableview interface-builder


    【解决方案1】:

    您不需要重写 drawRect: 就像使用 UIAlertView 的 textField 实现方法一样。然而,在某些情况下,绘制单元格的内容可以提高性能,特别是如果您有多个非透明层并且可以将它们绘制到一个不透明单元格中,因为渲染器不必多次合成和混合。通过绘制到单个不透明层中,硬件只需在它显示在屏幕上之前进行混合。

    请注意,如果您没有遇到延迟或每个单元格本身都有动画,那么绘图将无济于事。

    【讨论】:

      【解决方案2】:

      我在你的链接中找不到它说你应该继承 DrawRect 方法的地方。 我不认为苹果推荐它。

      我已经开发了一个完整的应用程序,其中包含许多带有自定义 tableViewCells 的 tableControllers,使用 nib 文件并且从不继承 drawRect 方法。

      我没有发现任何问题,我的应用成功通过了应用商店审核。

      【讨论】:

      • 该链接应将您直接带到“子类化 UITableViewCell”部分。他们在那里谈论覆盖drawRect:我不知道为什么。简单地在 IB 中做这件事似乎对我有用。感谢您的回复。
      • 它说:“您的 UITableViewCell 子类可以在其 drawRect: 方法中绘制其所有内容...”。这不是强制性的,但如果你想继承它,“你应该意识到这种方法的潜在缺点”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多