Reputation: 233
In this code
for (int i=0;i<3;i++) {
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*(i+1), self.yShift+self.rectLen*10);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*(i+1), self.yShift+self.rectLen*10+self.rectLen);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*i, self.yShift+self.rectLen*10+self.rectLen);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*i, self.yShift+self.rectLen*10);
CGContextMoveToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*i, self.yShift+self.rectLen*10);
}
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*4, self.yShift+self.rectLen*10);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*4, self.yShift+self.rectLen*10+self.rectLen);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*3, self.yShift+self.rectLen*10+self.rectLen);
CGContextAddLineToPoint(context, self.xShift+15+self.rectLen*self.width+self.rectLen*3, self.yShift+self.rectLen*10);
[[UIColor cyanColor] setFill];
[[UIColor blackColor] setStroke];
CGContextSetLineWidth(context, 1);
CGContextDrawPath(context, kCGPathStroke);
Line with setFill method doesn't work. What might be the problem of this? Code is located in drawRect: method
Upvotes: 1
Views: 3300
Reputation: 7346
Not only do you need to call the appropriate CG*
methods to set the fill like David suggested, you need to actually perform the fill using the following after you set the fill and stroke properties:
CGContextSetFillColorWithColor(context, [UIColor cyanColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor.CGColor);
CGContextFillPath(context);
CGContextStrokePath(context);
Upvotes: 1
Reputation: 56625
setFill isn't for Core Graphics drawing but for drawing like [myUIBezierPath fill];
Instead set the fill color and stroke color using:
CGContextSetFillColorWithColor(context, [[UIColor cyanColor] CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
Also, the following line:
CGContextDrawPath(context, kCGPathStroke);
Will only stroke the path, since the drawing mode is set to kCGPathStoke. To fill it as well you should replace it with
CGContextDrawPath(context, kCGPathFillStroke);
If your path has holes in it or crosses itself you should use even-odd fill and stroke
CGContextDrawPath(context, kCGPathEOFillStroke);
Upvotes: 5