Aight so möchte ich wie so ein Dreieck zeichnen:Wie ein Dreieck mit abgerundeten Ecken zeichnen quartz2d/Core Graphics mit
Derzeit bin ich eine Kombination aus einem CAShapeLayer verwenden und den Pfad zu schaffen mit ein UIBezierPath (der Code ist unten) und dann das als Maske für eine andere Ebene (self.layer, wie ich in einer UIView-Unterklasse bin, und anstatt die Ebenenklasse zu setzen, mache ich es so, damit ich die ursprüngliche Ebene beibehalten kann)
sowieso der Code:
_bezierPath = [[UIBezierPath bezierPath] retain];
#define COS30 0.86602540378
#define SIN30 0.5
[_bezierPath moveToPoint:(CGPoint){self.frame.size.width/2.f-r*SIN30,r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){self.frame.size.width/2.f,r*COS30*2.f} radius:r startAngle:2*M_PI/3.f endAngle:M_PI/3.f clockwise:YES];
[_bezierPath addLineToPoint:(CGPoint){self.frame.size.width-r*SIN30,self.frame.size.height-r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){self.frame.size.width-r*SIN30-r,self.frame.size.height-r*COS30} radius:r startAngle:0.f endAngle:-M_PI/3.f clockwise:YES];
[_bezierPath addLineToPoint:(CGPoint){r*SIN30,self.frame.size.height-r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){r*SIN30+r,self.frame.size.height-r*COS30} radius:r startAngle:4*M_PI/3.f endAngle:M_PI clockwise:YES];
[_bezierPath closePath];
CAShapeLayer *s = [CAShapeLayer layer];
s.frame = self.bounds;
s.path = _bezierPath.CGPath;
self.layer.mask = s;
self.layer.backgroundColor = [SLInsetButton backgroundColorForVariant:SLInsetButtonColorForSLGamePieceColor(_color)].CGColor;
und leider das Ergebnis ist nicht das, was ich suchte, anstatt die Ecken werden kleine Noppen (als ob es zu viel drehen)
Vielen Dank im Voraus
warum cos (30) und nicht mehr als 60? – AlexWien
In welchem Fall beziehen Sie sich? – DanZimm