Arc / Circle animation in iphone

2019-01-29 02:18发布

How would I animate a circle on the iPhone so that the arc starts at "0 degrees" and ends at "360 degrees"?

Advance Thanks, Sat

3条回答
疯言疯语
2楼-- · 2019-01-29 03:06

you should read the documentation that Felixyz provided and if you want an example of how to animate the circle have a look over the MBProgressHUD at this link link text. The loader has two modes one with a UIViewActivityIndicator and a progress indicator (a filling circle that it is animated from 0 to 360 degress) i think the last mode is what you want.

the fallowing code is from copy/paste from that implementation that animates the circle:

- (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);
}

but read the documentation first! hope it helps

查看更多
3楼-- · 2019-01-29 03:16
再贱就再见
4楼-- · 2019-01-29 03:17

You need to read the Quartz 2D Programming Guide's section on arcs. (I am assuming you are creating an app with the Cocoa Touch API, not a web app.) You also need to know how to set up a custom animation. You will have to create a custom UIView or CALayer to do the drawing, and create a property (arc degree) that can be animated with a CAAnimation object. Alternatively, you can control the animation using an NSTimer instead. You pretty much have to have a grasp of these classes (and others) to pull this off.

查看更多
登录 后发表回答