什么时候应该使用多层?
不幸的是,答案是:必要时。层很便宜,当然比 UIView/UIImageView 更轻,但它们也不是传统 iOS 响应器链的一部分(因为它们不能直接接收/中继触摸),但单元本身通常会为您处理。Apple建议您避免 -drawRect:
为了清洁而使用拆分视图层次结构,但这并不意味着您必须为背景使用不同的视图。
是否可以在 drawRect 中使用 UIImageView 的输出?
如果您在使用 FPS 时遇到问题,最好先隔离它的来源,然后再优化可能不是问题点的东西。我会先调查图像:您是在执行任何类型的缓存,还是每次-drawRect:
调用 tableview 单元时都必须重新绘制它?UIImageView 是否必须对图像执行任何类型的调整大小/缩放/解压缩?如果是这样,您是否考虑过自己调整图像大小一次,然后将结果保存到位图上下文中,您只需从数组中提取并绘制,而不是让 UIImageView 浪费时间为您做这件事?
只要您的其他问题已解决,我也会解决动画问题
为表格单元格的背景设置动画是微不足道的,特别是如果您的单元格在 Core Graphics 中绘制它的背景,而不是使用 CALayer(这意味着您将使用 CABasicAnimation 对背景颜色进行动画处理,详见此处)。我特别喜欢TwUI 的选定状态更改动画机制,因为它非常简单:
- 启动动画上下文。
- 有一个调用的方法
-setNeedsDisplay
,或者做一些你想要动画的额外工作。
- 提交动画。