Drawing a line with Bezierpath using CAShapeLayer object
Can you try this. Its work for me
CAShapeLayer *line = [CAShapeLayer layer];
UIBezierPath *linePath=[UIBezierPath bezierPath];
[linePath moveToPoint:CGPointMake(startx, starty)];
[linePath addLineToPoint:CGPointMake(endx, endy)];
line.lineWidth = 10.0;
line.path=linePath.CGPath;
line.fillColor = shapecolor.CGColor;
line.strokeColor = shapecolor.CGColor;
[[self.view layer] addSublayer:line];
Usman Awan
I have to utilize and further develop my programming and IT skills as broadly as possible, in efficient ways so as to benefit the organization. Specialties: , iOS Development (iPhone/iPad Apps), Software Programing (Java, C++, ObjectiveC and Swift), Web Programming (JSF, Tiles, Richfaces, JSP, Spring, Hibernate, Struts 2, PHP, HTML, CSS, JS, Jquery)
Updated on June 14, 2022Comments
-
Usman Awan almost 2 years
I am making an image editor which can create different shapes objects like circle, triangle and square which can also be updated or removed. So I have used
CAShapeLayer
for creating shapes objects.Now I also want to draw a line on image which can also be updated or removed so I have used bezierpath and
CAShapeLayer
to create the line, it is working fine. BUT now the problem is that when I want to select any existing line it can be selected any where close to line tool becauseCAShapeLayer
also set the fill region which will be a straight line from start point to end point.My question is that how can I create line with no fill region using
CAShapeLayer
.Here is my code for creating line:
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;
Any idea on this will be really appreciated.
-
Shmidt over 10 yearsIt works. Probably you forgot to add layer
[self.view.layer addSublayer:line];
-
Usman Awan over 10 yearsI did add this line too, it creates the line fine but it also fill region from start point to end point and consider it as a layer part. So the problem is that whenever I try to tap near line line layer get selected.
-
Ric Santos almost 10 yearsShould you be using
[linePath addLineToPoint:point2]
? -
Usman Awan almost 10 yearspoint1, point2 , point3 are the three arbitrary points
-
Ayaz over 9 yearsif you got the solution then share it so it will helpful to other person.
-
-
Usman Awan over 9 yearswill definitely check it and let you know.
-
Max MacLeod over 9 yearsare you not missing [linePath stroke]?
-
Dominic K about 8 yearsYou don't need
[linePath stroke]
here, and in fact, you'll probably get context errors if you do (unless you manually start a context or use this indrawRect
) - callingstroke
uses Core Graphics, but right here we want to use Core Animation.