在iOS开发中,使用核心图形和/或Quartz 2D,如何绘制一个填充渐变的圆,使其看起来像一个球体?

在iOS开发中,使用核心图形和/或Quartz 2D,如何绘制一个填充渐变的圆,使其看起来像一个球体?,ios,objective-c,geometry,core-graphics,quartz-2d,Ios,Objective C,Geometry,Core Graphics,Quartz 2d,到目前为止,我已经研究了使用CGContextDrawLinearGradient()和CGContextDrawRadialGradient(),但是,对于前者,我不知道如何使渐变看起来像一个球体,对于后者,我不知道如何使渐变变成球体的形状,因为每次我尝试,它变成了一个完整的圆柱体,而不仅仅是一个球体 下面是我用来绘制二维圆的代码。我想使用渐变或任何其他可能的方法,仅使用核心图形和/或石英2D填充圆,使其看起来像球体 绘制圆的当前代码: CGContextRef ctx = UIGraphic

到目前为止,我已经研究了使用CGContextDrawLinearGradient()和CGContextDrawRadialGradient(),但是,对于前者,我不知道如何使渐变看起来像一个球体,对于后者,我不知道如何使渐变变成球体的形状,因为每次我尝试,它变成了一个完整的圆柱体,而不仅仅是一个球体

下面是我用来绘制二维圆的代码。我想使用渐变或任何其他可能的方法,仅使用核心图形和/或石英2D填充圆,使其看起来像球体

绘制圆的当前代码:

CGContextRef ctx = UIGraphicsGetCurrentContext();
float x = 20.0;
float y = 20.0;
float radius = 12.5;
CGContextFillEllipseInRect(ctx, CGRectMake(x, y, radius, radius);

注-上述代码的工作原理与预期相同,因此,如果出现任何错误,它们只是我在键入问题时的错误,而不是在实际文件中键入代码时的错误。

我相信这就是您所寻找的效果:

这是使用径向渐变创建的。渐变以半径0开始,以圆大小的半径结束。起点的中心点必须在终点创建的圆内,否则将得到圆锥体形状。以下是我用来制作此图像的代码(在使用之前,需要将几个部分翻译成iOS):


你能举一个你认为“看起来像球体”的例子吗?
CGContextRef ctxt = [[NSGraphicsContext currentContext] graphicsPort];
CGGradientRef gradient;
CGColorSpaceRef colorSpace;
CGFloat locations[] = {0.0,1.0};
CGFloat components[] = { 0.5,1.0,1.0,1.0, 0.25,0.5,0.5,1.0 };
colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
gradient = CGGradientCreateWithColorComponents(colorSpace,components,locations,
                                               sizeof(locations)/sizeof(CGFloat));
CGPoint start = {70.0,130.0}, end = {100.0,100.0};
CGFloat startRadius = 0.0, endRadius = 90.0;
CGContextDrawRadialGradient(ctxt,gradient,start,startRadius,end,endRadius,0);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);