Desidero disegnare una linea curva finché non completa la rotazione e si unisce per diventare un cerchio completo, solo il contorno del cerchio, non riempito. Questo deve essere animato per un numero di secondi.iPhone: disegno di una linea curva finché non diventa un'animazione circolare
Qualcuno può indicarmi la giusta direzione? Ho già chiesto un similar question a questo, ma ho formulato in modo errato così tutti hanno avuto difficoltà a capire cosa volevo dire e quindi si è perso nel mare delle domande.
Molte grazie per qualsiasi aiuto
[modifica]
Sono attualmente non a classing UIView e drawRect prevalente. Ho trovato il codice per disegnare un cerchio pieno ma ho solo bisogno del tratto.
- (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);
}
[modifica # 2]
ho cambiato il codice per rimuovere tutti i riferimenti di riempimento, ma ora il suo tutto ciò che non disegno :(tutte le idee?
- (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);
}
[modifica # 3] Soluzione
Destra Mi sento come un vero capopopone! Il problema era che i valori dei colori dei tratti non erano stati inizializzati, il che significava che la linea veniva disegnata ma ovviamente non poteva vederla !!
grazie per il vostro aiuto! – bennythemink