什么是推荐的核心图形技术,用于绘制非常自定义的UITableViewCells

时间:2013-02-01 01:34:42

标签: iphone ios core-graphics

enter image description here

嘿伙计们。关于在核心图形中绘制这样的东西的几个要点很好奇。

我应该何时使用多个图层? 我知道我可以使用剪切路径在角落上进行舍入,据我所知,这听起来比在CALayer上放置边框半径更有效。

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

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

2 个答案:

答案 0 :(得分:1)

  1. 现在表现是个问题吗?我会远离“优化”,直到你注意到滞后,并且你肯定是因为画的“慢”。

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

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

  4. PaintCode可以提供帮助吗?它根据您的设计输出Core Graphics代码。

答案 1 :(得分:1)

  

我应该何时使用多个图层?

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

  

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

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

只要您关闭其他问题,我也会解决动画问题

动画表格单元格的背景是微不足道的,特别是如果你的单元格在Core Graphics中绘制它的背景,而不是使用CALayer(这意味着你将使用CABasicAnimation来动画来往于背景颜色的动画详细{{ 3}})。我特别喜欢here,因为它很简单:

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