你好,
本周末我开始观看2011年WWDC视频.我发现了关于iOS的非常有趣的话题.我的最爱是关于性能和图形,但我发现其中两个显然是矛盾的.当然有一些我没有得到的东西.我正在谈论的会议是理解UIKit渲染-121和抛光你的应用程序-105.
不幸的是,2011年的示例代码仍然无法下载,因此很难获得整体视图.在一个会话中,他们解释说,在scrollview等可视化期间,大多数时候应该避免屏幕外渲染.他们修复了示例代码中的性能问题,几乎在-drawRect方法中绘制了所有内容.在另一个会话中,性能问题(在表视图上)似乎是由于表单元格的-drawRect方法中的代码过多.
首先我不清楚当系统需要OffScreen渲染时,我在视频中看到一些石英功能如:cornerRadious,shadowOffset,shadowColor需要它,但确实存在一般规则?
其次我不知道我是否理解得很好,但似乎没有屏幕外渲染添加图层或视图是要走的路.我希望有人能为此带来光明......
谢谢,
安德烈
我试图避免在iOS上使用混合层来提高性能.然而,我注意到,可调整大小的图像我使用了backgroundView我的UITableViewCell被标记为混合层:

实际上,使用任何可调整大小的图像 - 即使是没有透明度的JPEG - 也会导致图层混合,如此屏幕截图所示,首先将PNG和JPEG用作图像中的可调整大小的图像UIImageView.唯一不需要混合图层的可调整大小的图像是1x1像素图像,从底部看:

有什么方法可以避免这种情况吗?核心动画分析是不精确的艺术(至少对我来说),但我认为它是滚动我的桌面视图时降低到大约25 FPS的主要贡献者.
编辑2:经过更多的实验,我发现如果我只是垂直或水平拉伸图像(PNG或JPG),它们就不会被标记为混合图层.然而,在更多的实验中,我认为这可能是因为仅在一个维度上拉伸的图像更小.我的图像在100x100时没有被视为混合,但它是150x100.
