Вы можете попробовать использовать CGGradientRef и CGContextDrawLinearGradient из QuartzCore (не забыл добавить QuartzCore в свой проект и импортировать его)
создания градиента Вы можете использовать что-то вроде этого что-то подобное (в UIView подкласс):
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGGradientRef gradient;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();;
//5 is for count of colors
CGFloat parts[5] = { .2, .4, .6, .8, .1 };
//colors for each part, so 5 parts by 4 each (r,g,b,a for each part in range 0 - 1, 1 is for 255 in regular rgb space, and alpha as usual)
CGFloat components[20] = {
.3, .24, .1, 1,
.3, .2, .7, 1,
.3, .84, .2, 1,
.3, .24, .3, 1,
.1, .5, .38, 1
};
gradient = CGGradientCreateWithColorComponents(rgb, components, parts, 5);
CGPoint top = CGPointMake(CGRectGetMidX(rect), 0.0f);
CGPoint bottom = CGPointMake(CGRectGetMidX(rect), rect.size.height);
CGContextDrawLinearGradient(ctx, gradient, top, bottom, 0);
CGGradientRelease(gradient);
CGColorSpaceRelease(rgb);
//round shape you can archive by Vladimir's solution
CAShapeLayer *shLayer = [CAShapeLayer layer];
[shLayer setPath:CGPathCreateWithEllipseInRect(CGRectInset(rect, 5, 5), NULL)];
[self.layer setMask:shLayer];
}
Может помочь вам http://stackoverflow.com/questions/17269586/drawing-a-circle-filled-different-parts-with-different-color – iPatel
@iPatel Я могу рисовать с помощью как piechart, но я хочу рисовать как на изображении не тактично. Спасибо за помощь. – Maul
Нужно ли вам это масштабировать? Можете ли вы просто использовать 'UIImageView' с png-файлом? – godel9