iphone中的弧形/圆形动画

时间:2009-07-23 15:03:19

标签: iphone animation

如何在iPhone上为圆形设置动画,使圆弧从“0度”开始,以“360度”结束?

预先谢谢, 饱和

3 个答案:

答案 0 :(得分:2)

您需要阅读Quartz 2D Programming Guide's section on arcs。 (我假设您正在使用Cocoa Touch API创建应用程序,而不是Web应用程序。)您还需要知道如何设置自定义动画。您必须创建自定义UIView或CALayer来执行绘图,并创建可以使用CAAnimation对象进行动画处理的属性(弧度)。或者,您可以使用NSTimer控制动画。你几乎必须掌握这些类(和其他类)来解决这个问题。

答案 1 :(得分:1)

答案 2 :(得分:0)

您应该阅读Felixyz提供的文档,如果您想要一个如何设置圆形动画的示例,请查看此链接link text上的MBProgressHUD。加载器有两个模式,一个带有UIViewActivityIndicator和一个进度指示器(一个填充圆圈,动画从0到360度)我觉得最后一种模式就是你想要的。

以下代码来自该实现的复制/粘贴动画圆圈:

- (void)drawRect:(CGRect)rect {
    CGRect allRect = self.bounds;
    CGRect circleRect = CGRectMake(allRect.origin.x + 2, allRect.origin.y + 2, 
                                   allRect.size.width - 4, allRect.size.height - 4);
    CGContextRef context = UIGraphicsGetCurrentContext();
    // Draw background
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); // white
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.1); // translucent white
    CGContextSetLineWidth(context, 2.0);
    CGContextFillEllipseInRect(context, circleRect);
    CGContextStrokeEllipseInRect(context, circleRect);
    // Draw progress
    float x = (allRect.size.width / 2);
    float y = (allRect.size.height / 2);
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); // white
    CGContextMoveToPoint(context, x, y);
    CGContextAddArc(context, x, y, (allRect.size.width - 4) / 2, -(PI / 2), 
                                   (self.progress * 2 * PI) - PI / 2, 0);
    CGContextClosePath(context);    CGContextFillPath(context);
}

但请先阅读文档!希望它有所帮助