2009-07-23 4 views
1

Comment est-ce que j'animerais un cercle sur l'iPhone de sorte que l'arc commence à «0 degrés» et se termine à «360 degrés»?Arc/animation de cercle dans l'iphone

Advance Merci, Sam

+0

Vous voulez animer le dessin d'un cercle? – Daniel

+0

C'est ce qu'il a dit. – Felixyz

+0

Pouvez-vous fournir plus d'informations, telles que l'API de dessin que vous souhaitez utiliser (au minimum)? Nous ne pouvons pas vous aider jusqu'à ce que vous fournissiez beaucoup plus d'informations que ce que vous avez jusqu'ici. –

Répondre

2

Vous devez lire le Quartz 2D Programming Guide's section on arcs. (Je suppose que vous créez une application avec l'API Cocoa Touch, pas une application Web.) Vous devez également savoir comment configurer une animation personnalisée. Vous devrez créer un UIView ou CALayer personnalisé pour faire le dessin, et créer une propriété (degré d'arc) qui peut être animée avec un objet CAAnimation. Alternativement, vous pouvez contrôler l'animation en utilisant un NSTimer à la place. Vous avez à peu près avoir une compréhension de ces classes (et d'autres) pour le retirer.

0

vous devriez lire la documentation que Felixyz fourni et si vous voulez un exemple de comment animer le cercle jeter un oeil sur le MBProgressHUD à ce lien link text. Le chargeur a deux modes un avec un UIViewActivityIndicator et un indicateur de progression (un cercle de remplissage qu'il est animé de 0 à 360 degrés) je pense que le dernier mode est ce que vous voulez.

le code est de mise en jachère copier/coller de cette mise en œuvre qui anime le cercle:

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

mais lisez la documentation d'abord! espère que cela aide

Questions connexes