Sto provando a creare una barra di caricamento circolare e voglio usare Core Graphics invece di mascherare le immagini per creare l'effetto. Tuttavia, non sto ottenendo la fedeltà che speravo: Smoothing Core Curve grafiche
Non importa cosa ho provato, i goccioline sembrano piuttosto male. L'antialiasing è attivo e ho già provato a trasformare la "piattezza" in .1 su CGContextRef
. L'immagine proviene dal simulatore (Retina), sembra leggermente meglio su un dispositivo, ma non è poi così eccezionale.
Disegno codice, all'interno di una sottoclasse di CALayer:
-(void)drawInContext:(CGContextRef)ctx {
CGPoint center = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
CGFloat delta = toRadians(360 * percent);
CGFloat innerRadius = 69.5;
CGFloat outerRadius = innerRadius + 12;
CGContextSetFillColorWithColor(ctx, [UIColor colorWithRed:99/256.0 green:183/256.0 blue:70/256.0 alpha:.5].CGColor);
CGContextSetStrokeColorWithColor(ctx, [UIColor colorWithRed:99/256.0 green:183/256.0 blue:70/256.0 alpha:10.0].CGColor);
CGContextSetLineWidth(ctx, 1);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRelativeArc(path, NULL, center.x, center.y, innerRadius, -(M_PI/2), delta);
CGPathAddRelativeArc(path, NULL, center.x, center.y, outerRadius, delta - (M_PI/2), -delta);
CGPathAddLineToPoint(path, NULL, center.x, center.y-innerRadius);
CGContextAddPath(ctx, path);
CGContextFillPath(ctx);
CGContextAddPath(ctx, path);
CGContextStrokePath(ctx);
}
E 'questa la migliore grafica core può fare o mi sto perdendo qualcosa?
Considerando che l'immagine è stata chiaramente ridimensionata di 2 in ogni dimensione, e hai scattato l'immagine dal simulatore Retina, direi che c'è un problema con la trasformazione del tuo livello o di uno dei suoi genitori. Stai creando 'ctx' in qualche altro metodo o è il framework che ti passa? Qual è l'output di 'NSLog ("% @ ", [[[UIApplication sharedApplication] keyWindow] recursiveDescription])'? –
Il contesto mi viene fornito dal CALayer. [Here] (http://pastebin.com/0Gjkxh2a) è l'output di 'recursiveDescription'. 'KDGoalBar' è la sottoclasse UIControl in cui viene inserito e' KDGoalBarPercentLayer' è dove viene eseguito il disegno corrente. – Kevin