我计算一种新颜色,需要在视图的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);