build议使用Core Graphics技术来绘制非常自定义的UITableViewCells

在这里输入图像说明

大家好。 对于在核心graphics中绘制类似的几个关键点感到好奇。

什么时候应该使用多个图层? 我知道我可以使用裁剪path来做四舍五入的angular落,从我的理解,这听起来像比在CALayer上放置边框半径更有效。

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

任何其他的技巧,窍门和资源是最好的方式来绘制像这样的单元格以获得尽可能高的FPS比率,这是值得欢迎的。

  1. 现在的performance是一个问题吗? 我会远离“优化”,直到你注意到滞后,你肯定是从绘制“慢”。

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

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

PaintCode可以帮忙吗? 它根据您的devise输出Core Graphics代码。

什么时候应该使用多个图层?

不幸的是,答案是:必要时。 图层比UIView / UIImageView便宜,当然也比较轻,但是它们也不是传统的iOS响应器链的一部分(因为它们不能直接接收/传递触摸),但是单元本身通常会为你处理。 苹果build议您避免使用 -drawRect: 为了 -drawRect:起见,采用分割视图层次结构,但这并不意味着您必须对背景有不同的看法。

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

如果您在使用FPS时遇到问题,在优化可能不是问题点的​​东西之前,先隔离它的来源。 我将首先调查图像:你是否正在执行任何types的caching,或者tableview单元格是否每次调用-drawRect:被调用? UIImageView是否必须对图像执行任何types的resize/缩放/解压缩? 如果是这样,你有没有考虑调整一次图像的大小,然后将结果保存到一个位图上下文中,你只需从数组中拉出,然后绘制,而不是让UIImageView浪费时间为你做这件事?

只要你的其他问题closures,我也会解决animation问题

animation表格单元格的背景是微不足道的,特别是如果你的单元格在Core Graphics中绘制它的背景,而不是使用CALayer(这意味着你将使用CABasicAnimation来animation和背景颜色的animation)。 我特别喜欢TwUI所选状态更改的animation机制 ,因为它只是简单而已:

  1. 开始一个animation上下文。
  2. 有一个调用-setNeedsDisplay方法,或者做一些额外的工作,你想animation。
  3. 提交animation。