Tworzę edytor obrazów, który może tworzyć różne kształty obiektów, takich jak koło, trójkąt i kwadrat, które również można zaktualizować lub usunąć. Tak więc użyłem CAShapeLayer
do tworzenia obiektów kształtów.Rysowanie linii z Bezierpath przy użyciu obiektu CAShapeLayer
Teraz również chcę narysować linię na obrazie, który również można zaktualizować lub usunąć, więc użyłem bezierpath i CAShapeLayer
do utworzenia linii, działa dobrze. ALE teraz problem polega na tym, że gdy chcę wybrać dowolną istniejącą linię, można wybrać dowolne narzędzie blisko linii, ponieważ CAShapeLayer
ustawia również obszar wypełnienia, który będzie linią prostą od punktu początkowego do punktu końcowego.
Moje pytanie brzmi: w jaki sposób utworzyć linię bez obszaru wypełnienia przy użyciu CAShapeLayer
.
Oto mój kod do tworzenia linii:
CAShapeLayer *line = [CAShapeLayer layer];
// Using bezierpath to make line
UIBezierPath *linePath=[UIBezierPath bezierPath];
// Creating L with line
[linePath moveToPoint:point1];
[linePath addToPoint:point2];
[linePath addToPoint:point3];
line.path=linePath.CGPath;
// Configure the appearence of the line
line.fillColor = Nil;
line.opacity = 1.0;
line.strokeColor = [UIColor whiteColor].CGColor;
Każdy pomysł na to będzie bardzo mile widziane.
to działa. Prawdopodobnie zapomniałeś dodać warstwę '' '[self.view.layer addSublayer: line];' '' – Shmidt
Dodałem również tę linię, tworzy ona cienką linię, ale także wypełnia region od punktu początkowego do punktu końcowego i rozważa to jako część warstwowa. Problem polega na tym, że gdy tylko spróbuję dotknąć w pobliżu linii liniowej, wybierz opcję. –
Czy używasz '[linePath addLineToPoint: point2]'? –