nrj*_*nrj 13 core-graphics uitableview ios
我最近发现了一篇关于使用UITableViewCells提高滚动性能的精彩文章:http://engineering.twitter.com/2012/02/simple-strategies-for-smooth-animation.html - 虽然可以找到很多很棒的技巧文章,有一个特别令我好奇的:
Twitter for iPhone 4.0中的推文在微妙的纹理背景上有一个投影.这提出了一个挑战,因为混合是昂贵的.我们通过从单元格的内容区域中分割阴影区域来减少Core Animation必须考虑的非透明区域来解决这个问题.
使用iOS模拟器,单击调试 - 颜色混合图层将显示如下内容:

标记为红色的区域是混合的,绿色区域是不透明的.大.文章没有提到的是:我该如何实现?我的理解是UIView要么是不透明的,要么不是.在我看来,实现这一目标的唯一方法是使用子视图,但文章明确指出这是一个天真的实现:
相反,我们的推文单元格包含一个没有子视图的视图; 一个drawRect:绘制一切.
那么我该如何划分不透明的东西,以及我的单个drawRect:方法中没有的东西呢?
在您展示的示例中,我不相信他们通过视图显示背景。我认为他们正在模拟核心图形中的背景。换句话说,他们在每个单元格中绘制浅灰色的背景。然后他们绘制阴影(使用透明度),最后在顶部绘制其余的不透明内容。我可能是错的,但我不相信你可以使视图的某些部分透明。如果是这样,我会对它非常非常感兴趣,因为我一直使用核心显卡,但我避免使用圆角,因为混合整个视图似乎并不值得。
更新
在做了更多研究并浏览了苹果的文档之后,我认为视图不可能只有一部分是不透明的。另外,在阅读 Twitter 的博客文章后,我认为他们并没有说他们这样做了。请注意,当他们说:
相反,我们的推文单元包含一个没有子视图的视图;单个绘制矩形:绘制所有内容。
他们专门谈论UILabel和UIImageView。换句话说,他们不使用这些视图,而是直接使用 Core Graphics 绘制图像。至于 UILabels,我个人使用 Core Text,因为它有更多的字体支持,但它们也可能使用更简单的东西,比如 NSString 的drawAtPoint:withFont:方法。但他们想要传达的主要观点是,单元格的内容都是一张 CG 绘图。
然后他们转到一个新部分:避免混合。在这里,他们特意指出,他们通过以下方式避免混合:
将阴影区域与单元格的内容区域分开。
做到这一点的唯一方法是使用不同的视图。他们可以使用两种方法,但首先请注意,单元格分隔线本身就是覆盖层(由 tableView 提供)。第一种方法是在单元格内使用多个视图。第二种方法是通过将适当的视图插入 UIScrollView 来将阴影/混合视图置于单元格后面/上方。鉴于他们之前关于每个单元格只有一个 view/drawRect 的声明,这可能就是他们正在做的事情。每种方法都会有其挑战,但我个人认为将单元格分成 3 个视图(阴影、内容、阴影)会更容易。这将使处理第一个/最后一个单元格的情况变得更加容易。
| 归档时间: |
|
| 查看次数: |
1277 次 |
| 最近记录: |