我计算了一种新颜色,需要在视图的 drawRect 方法中以渐变方式渲染它。
这在时间分析器中占用了大量执行时间,并且还导致 drawRect 调用被跳过或错过。
在drawRect中优化渐变渲染的最佳方法是什么?
我有以下代码
CGContextSaveGState(ctx);
CGContextAddPath(ctx, path.CGPath);
CGContextClip(ctx);
// get the color components
const CGFloat* components = CGColorGetComponents(fillColor.CGColor);
// create the gradient
CGGradientRef gradient;
CGColorSpaceRef colorspace;
size_t num_locations = 3;
CGFloat componentsArray[12] =
{
components[0], components[1], components[2], 1.0, // Start color
components[0], components[1], components[2], 1.0, // Middle color
components[0], components[1], components[2], 0.0 // End color
};
colorspace = CGColorSpaceCreateDeviceRGB();
gradient = CGGradientCreateWithColorComponents(colorspace, componentsArray, locations, num_locations);
CGContextDrawLinearGradient (ctx, gradient, gradientStartPoint, gradientEndPoint, 0);
CGGradientRelease(gradient);
CGContextRestoreGState(ctx);