0

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

0 回答 0