我最近看到了这篇关于使用 UITableViewCells 提高滚动性能的精彩文章:http: //engineering.twitter.com/2012/02/simple-strategies-for-smooth-animation.html -- 虽然可以在其中找到许多很棒的技巧文章中,有一篇特别让我感兴趣:
iPhone 4.0 版 Twitter 中的推文在微妙的纹理背景之上有一个投影。这提出了一个挑战,因为混合成本很高。我们通过减少核心动画必须考虑的非透明区域来解决这个问题,方法是将阴影区域与单元格的内容区域分开。
使用 iOS 模拟器,单击Debug - Color Blended Layers将显示如下内容:
用红色标记的区域是混合的,绿色区域是不透明的。伟大的。这篇文章没有提到的是:我该如何实现这个?我的理解是 UIView 要么不透明,要么不透明。在我看来,实现这一点的唯一方法是使用子视图,但文章明确指出这是一个幼稚的实现:
相反,我们的 Tweet 单元格包含一个没有子视图的视图;一个drawRect:绘制一切。
那么我如何区分不透明的部分,以及我的单个 drawRect: 方法中不包含的部分?