In Kerngrafiken abgerundete Rechtecke zeichnen

Ich möchte die Ereignismarkierungen des Standard-iPad-Kalenders replizieren, die folgendermaßen aussehen:

 Ich versuche, dafür Coregraphics zu verwenden, indem ich einen Pfad eines abgerundeten Rektums male. Dies ist das Ergebnis, das ich mir einfallen lassen könnte:

Wie Sie sehen, sieht die iPad-Version in den abgerundeten Ecken viel flüssiger aus. Ich habe versucht, eine größere Linienbreite zu verwenden, die so aussieht:

Mein Code sieht so aus (ich habe ihn von dieser Website erhalten):

<code>UIColor* fillColor= [self.color colorByMultiplyingByRed:1 green:1 blue:1 alpha:0.2];

CGContextSetLineWidth(ctx, 1.0);
CGContextSetStrokeColorWithColor(ctx, self.color.CGColor);
CGContextSetFillColorWithColor(ctx, fillColor.CGColor);

CGRect rrect = self.bounds;

CGFloat radius = 30.0;
CGFloat width = CGRectGetWidth(rrect);
CGFloat height = CGRectGetHeight(rrect);

if (radius > width/2.0)
   radius = width/2.0;

if (radius > height/2.0)
   radius = height/2.0;    

CGFloat minx = CGRectGetMinX(rrect);
CGFloat midx = CGRectGetMidX(rrect);
CGFloat maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect);
CGFloat midy = CGRectGetMidY(rrect);
CGFloat maxy = CGRectGetMaxY(rrect);
CGContextMoveToPoint(ctx, minx, midy);
CGContextAddArcToPoint(ctx, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(ctx, maxx, miny, maxx, midy, radius);

CGContextAddArcToPoint(ctx, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(ctx, minx, maxy, minx, midy, radius);
CGContextClosePath(ctx);
CGContextDrawPath(ctx, kCGPathFillStroke);

// draw circle on left side

CGRect target= CGRectMake(rect.origin.x + 4.0, 
                          rect.origin.y + 3.0, 
                          7.0, 7.0);

CGContextSetFillColorWithColor(ctx, self.color.CGColor);
CGContextSetAlpha(ctx, 0.4);
CGContextFillEllipseInRect(ctx, target);

CGContextSetAlpha(ctx, 0.9);
CGContextSetStrokeColorWithColor(ctx, self.color.CGColor);
CGContextStrokeEllipseInRect(ctx, target);
</code>

Kann mir jemand helfen, die Ergebnisse dem Original näher zu bringen? Sollte ich eine andere Technik verwenden, um das abgerundete Rechteck zu malen, oder gibt es Parameter, die ich ändern kann, damit es glatter aussieht? Ich habe es bereits mit einem versuchtUIBezierPath, aber es sah im Grunde gleich aus. Irgendwelche Tipps?

[Bearbeiten] DieCGRectInset-basierte Lösung sieht so aus:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage