【问题标题】:What are recommended Core Graphics techniques for drawing very custom UITableViewCells什么是推荐的核心图形技术来绘制非常自定义的 UITableViewCells
【发布时间】:2013-02-02 06:40:30
【问题描述】:

大家好。对在核心图形中绘制此类内容的几个关键点感到好奇。

什么时候应该使用多层? 我知道我可以使用剪切路径对角进行舍入,据我了解,这听起来比在 CALayer 上设置边框半径更有效。

是否可以在 drawRect 中使用 UIImageView 的输出? 我知道你实际上不能使用视图,但我在很多地方看到 UIImageView 绘制图像比直接在 drawRect 中绘制图像更有效。是否有可能以某种方式在那里利用它们,还是只需要吸收它并使用 CG?

欢迎任何其他提示、技巧和资源,以最佳方式绘制这样的单元格以尽可能高的 FPS 速率。

【问题讨论】:

    标签: iphone ios core-graphics


    【解决方案1】:
    1. 现在是性能问题吗?我会远离“优化”,直到您注意到滞后并且您肯定它来自绘制“缓慢”。

    2. 如果您还没有开始,请执行基本/简单的方法。它很可能在新的 iOS 设备上足够快。

    3. 只在drawRect中绘制图像,不要做任何花哨的事情。

    PaintCode 可以帮忙吗?它会根据您的设计输出核心图形代码。

    【讨论】:

      【解决方案2】:

      什么时候应该使用多层?

      很遗憾,答案是:必要时。层很便宜,当然比 UIView/UIImageView 更轻,但它们也不是传统 iOS 响应器链的一部分(因为它们不能直接接收/中继触摸),但单元本身通常会为您处理。 Apple recommends that you avoid -drawRect: 支持为了整洁而划分视图层次结构,但这并不意味着您必须对背景有不同的视图。

      是否可以在 drawRect 中使用 UIImageView 的输出?

      如果您在使用 FPS 时遇到问题,最好先隔离它的来源,然后再优化可能不是问题点的​​东西。我会先调查图像:您是否在执行任何类型的缓存,或者每次调用 -drawRect: 时 tableview 单元格是否必须重新绘制它? UIImageView 是否必须对图像执行任何类型的调整大小/缩放/解压缩?如果是这样,您是否考虑过自己调整图像大小一次,然后将结果保存到位图上下文中,您只需从数组中提取并绘制,而不是让 UIImageView 浪费时间为您做这件事?

      只要你的其他问题已经结束,我也会解决动画问题

      动画表格单元格的背景是微不足道的,特别是如果您的单元格在 Core Graphics 中绘制它的背景,而不是使用 CALayer(这意味着您将使用 CABasicAnimation 对背景颜色进行动画处理,详见@987654322 @)。我特别喜欢TwUI's animation mechanism for selected state changes,因为它非常简单:

      1. 启动动画上下文。
      2. 有一个方法可以调用-setNeedsDisplay,或者做一些你想要动画的额外工作。
      3. 提交动画。

      【讨论】:

      • 感谢您的详细回答。非常感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2010-11-18
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      相关资源
      最近更新 更多