【问题标题】:Fastest way to draw dynamic Angular (Conical) Gradient on iOS?在 iOS 上绘制动态角(锥形)渐变的最快方法?
【发布时间】:2015-02-26 23:32:40
【问题描述】:
使用 Core Graphics,传统上的方法是绘制到上下文,然后绘制到屏幕。但是对于动态(用户更改颜色和位置值)渐变,在任何合理的尺寸下,这都非常缓慢,即使在 iPad Air 2 上也是如此。
有什么方法可以考虑用 Core Animation 制作锥形(nee Angular)渐变并避免上下文性能问题,以便快速动态调整渐变?
【问题讨论】:
标签:
ios
core-graphics
core-animation
gradient
【解决方案1】:
我最近写了一个在 Swift 中绘制动态圆锥渐变的库:AEConicalGradient
为了获得更好的性能,我使用的方法是在圆的中心绘制不同角度和颜色的线条,而不是逐个像素地绘制内容(更少的迭代)。
还有助于打开CALayer 的drawsAsynchronously 属性。
在提供的示例中,您可以看到更改设备方向时渐变颜色的动态更新,但在更大的设备上仍然有些迟缓。
如果有人知道如何进一步提高性能,让我们在这里讨论。