如何用iOS中的渐变填充CGPoint定义的形状?

我有一个在代码中设置的箭头的自定义形状。 我想要做的是用渐变填充它。 问题是,我不知道如何用渐变填充非矩形形状(暗框内的空间)。 有任何想法吗?

//Define colours used in drawing CGContextRef context = UIGraphicsGetCurrentContext(); CGColorRef lightColor = _lightColor.CGColor; CGColorRef darkColor = _darkColor.CGColor; CGColorRef shadowColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.5].CGColor; //Get label text size to help determine sizes for drawing CGSize textSize = [[_titleLabel text] sizeWithFont:[_titleLabel font]]; //Set shadow CGContextSaveGState(context); CGContextSetShadowWithColor(context, CGSizeMake(0, 2), 3.0, shadowColor); //Set arrow shape CGPoint rectangle_points[] = { CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y), CGPointMake(textSize.width+10, _coloredBoxRect.origin.y), CGPointMake(textSize.width+40, _coloredBoxRect.origin.y+20), CGPointMake(textSize.width+10, _coloredBoxRect.origin.y+40), CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y+40), CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y), }; CGContextAddLines(context, rectangle_points, 6); CGContextSetFillColorWithColor(context, lightColor); CGContextFillPath(context); CGContextRestoreGState(context); //Draw dark frame for the arrow CGContextSetStrokeColorWithColor(context, darkColor); CGContextSetLineWidth(context, 1.0); CGContextSaveGState(context); draw1PxStroke(context, CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y), CGPointMake(textSize.width+10, _coloredBoxRect.origin.y), darkColor); draw1PxStroke(context, CGPointMake(textSize.width+10, _coloredBoxRect.origin.y+40), CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y+40), darkColor); draw1PxStroke(context, CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y), CGPointMake(_coloredBoxRect.origin.x, _coloredBoxRect.origin.y+40), darkColor); draw1PxStroke(context, CGPointMake(textSize.width+10, _coloredBoxRect.origin.y), CGPointMake(textSize.width+40, _coloredBoxRect.origin.y+20), darkColor); draw1PxStroke(context, CGPointMake(textSize.width+10, _coloredBoxRect.origin.y+40), CGPointMake(textSize.width+40, _coloredBoxRect.origin.y+20), darkColor); CGContextRestoreGState(context); 

看看这个苹果示例应用程序。 它正是你需要的“多边形”部分(用于填充多边形)。 你需要改变的是绘制渐变,而不是像在这个例子中绘制。 示例中的“渐变”部分也列举了绘制渐变。

http://developer.apple.com/library/ios/#samplecode/QuartzDemo/Introduction/Intro.html

希望这有助于,弗拉德