我希望画一条曲线,直到它完全旋转并连接成一个完整的圆,只是圆轮廓,而不是实心。这必须经过几秒钟的动画处理。

谁能指出我正确的方向?我已经问过一个similar question,但是我的措词不正确,所以每个人都很难理解我的意思,因此迷失在了很多问题中。

非常感谢您的帮助

[编辑]

我目前正在子类化UIView和重写drawRect。我找到了绘制实心圆的代码,但我只需要描边。

- (void)drawRect:(CGRect)rect {
// Drawing code

CGRect allRect = self.bounds;
CGRect circleRect = CGRectInset(allRect, 2.0f, 2.0f);

CGContextRef context = UIGraphicsGetCurrentContext();

// Draw background
CGContextSetRGBStrokeColor(context, self.strokeValueRed, self.strokeValueGreen, self.strokeValueBlue, self.strokeValueAlpha); // white
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 0.1f); // translucent white
CGContextSetLineWidth(context, self.lineWidth);
CGContextFillEllipseInRect(context, circleRect);
CGContextStrokeEllipseInRect(context, circleRect);

// Draw progress
CGPoint center = CGPointMake(allRect.size.width / 2, allRect.size.height / 2);
CGFloat radius = (allRect.size.width - 4) / 2;
CGFloat startAngle = - ((float)M_PI / 2); // 90 degrees
CGFloat endAngle = (self.progress * 2 * (float)M_PI) + startAngle;
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f); // white
CGContextMoveToPoint(context, center.x, center.y);
CGContextAddArc(context, center.x, center.y, radius, startAngle, endAngle, 0);
CGContextClosePath(context);
CGContextFillPath(context);
}

[编辑#2]

我更改了代码以删除所有填充引用,但现在没有绘制任何内容:(有什么想法吗?
- (void)drawRect:(CGRect)rect
{
// Drawing code

CGRect allRect = self.bounds;
CGContextRef context = UIGraphicsGetCurrentContext();

// Draw background
CGContextSetRGBStrokeColor(context, self.strokeValueRed, self.strokeValueGreen, self.strokeValueBlue, self.strokeValueAlpha); // white
CGContextSetLineWidth(context, 5);

// Draw progress
CGPoint center = CGPointMake(allRect.size.width / 2, allRect.size.height / 2);
CGFloat radius = (allRect.size.width - 4) / 2;
CGFloat startAngle = - ((float)M_PI / 2); // 90 degrees
CGFloat endAngle = (self.progress * 2 * (float)M_PI) + startAngle;
CGContextAddArc(context, center.x, center.y, radius, startAngle, endAngle, 0);
CGContextStrokePath(context);
}

[编辑#3]解决方案

是的,我觉得自己像个傻瓜!问题是笔划颜色值没有初始化,意味着正在画线,但显然看不到它!!

最佳答案

取出所有填满的内容。

最后将CGContextFillPath更改为CGContextStrokePath。

在末尾取出CGContextMoveToPoint和CGContextClosePath。那些只是勾勒出楔子的直边。

您可能必须更改CGContextMoveToPoint才能移动到弧的起点而不是中心,而不是将其取出。

关于iphone - iPhone:画一条曲线,直到它变成圆形动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8004972/

10-09 02:16