Ich arbeite an CAShapeLayer
. Und versuchen, nichtlinearen Pfad zu zeichnen.Ich möchte Frame auf CAShapeLayer
.So kann ich CGPathGetPathBoundingBox
Methode verwenden, um Frame von CGPathRef
zu erhalten.Rahmen und Grenzen von CAShapeLayer
Hier Code:
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100, (0), (M_PI_2), NO);
CGPathAddArc(path, NULL, rect.size.width/2, rect.size.height/2, 100-50, (M_PI_2), (0), YES);
CGPathCloseSubpath(path);
CAShapeLayer* arcLayer = [[CAShapeLayer alloc]init];
arcLayer.path = path;
arcLayer.frame = CGPathGetPathBoundingBox(path);
arcLayer.bounds = CGPathGetPathBoundingBox(path);
[self.layer addSublayer:arcLayer]; `
Bitte beachten Sie meinen Code sorgfältig .Ich gleichen Rahmen und Grenzen CAShapeLayer.My Problem festgelegt haben, wenn ich nicht Grenzen Einstellung bin (gleiche wie Rahmen), dann nicht zeigen meine Inhalte oder es wird nicht zeigen, meine Inhalte in frame.Warum? Bitte helfen Sie mir.Vielen Dank.
Also, in einem Satz: Legen Sie nicht 'Frame', nur' Grenzen' und auch 'Position' fest? –
Ja. Obwohl ich dachte, dass eine Frage mit 500 Punkten eine etwas ausführlichere Antwort erforderte. –
Im Allgemeinen mit Ebenen denke ich, dass Sie die besten Ergebnisse erzielen, indem Sie _bounds_ + _position_ und nicht _frame_ setzen. Aber für CAShapeLayer halte ich Grenzen nicht für wichtig, es sei denn, Sie möchten dem Inhalt eine Übersetzung hinzufügen.Das erklärt jedoch nicht, warum der Pfad nicht gezeichnet wird, oder? – nielsbot