这是我的代码:
CGContextSaveGState(context);
CGContextAddRect(context, CGContextGetClipBoundingBox(context));
CGContextAddPath(context, pickerPath);
CGContextEOClip(context);
CGContextAddPath(context, pickerPath);
//Gradient
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGFloat colors[20];
colors[0] = 0.255;
colors[1] = 0.255;
colors[2] = 0.286;
colors[3] = 1.0;
colors[4] = 0.169;
colors[5] = 0.169;
colors[6] = 0.188;
colors[7] = 1.0;
colors[8] = 0.153;
colors[9] = 0.153;
colors[10] = 0.173;
colors[11] = 1.0;
colors[12] = 0.133;
colors[13] = 0.133;
colors[14] = 0.149;
colors[15] = 1.0;
colors[16] = 0.122;
colors[17] = 0.122;
colors[18] = 0.137;
colors[19] = 1.0;
CGFloat locations[] = { 0.0, 0.171, 0.580, 0.580, 1.0 };
CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, locations, 5);
CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(0, 257), 0);
//Red fill
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillPath(context);
CGContextRestoreGState(context);
它绘制渐变,但不绘制红色填充。如果我注释掉渐变,它仍然不会绘制红色填充。
任何想法为什么?
答案 0 :(得分:1)
问题可能是您在上下文仍被剪裁时尝试填充椭圆。尝试在2个操作中进行绘图:
CGContextSaveGState(context);
// Draw gradient with ellipse clipped-out as you do now
CGContextRestoreGState(context);
CGContextSaveGState(context);
// Set ellipse path again and fill it
CGContextRestoreGState(context);