UIColor SetFill не работает
В этом коде
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);
Линия с методом setFill не работает. Что может быть проблемой? Код находится в drawRect: method
Ответы
Ответ 1
setFill - это не для графического рисунка основной графики, а для рисования, как [myUIBezierPath fill];
Вместо этого установите цвет заливки и цвет обводки, используя:
CGContextSetFillColorWithColor(context, [[UIColor cyanColor] CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
Кроме того, следующая строка:
CGContextDrawPath(context, kCGPathStroke);
Погладит только путь, так как для режима рисования установлено значение kCGPathStoke. Чтобы заполнить его, вы должны заменить его на
CGContextDrawPath(context, kCGPathFillStroke);
Если ваш путь имеет отверстия в нем или пересекает себя, вы должны использовать четное заполнение и штрих
CGContextDrawPath(context, kCGPathEOFillStroke);
Ответ 2
Вам нужно не только вызвать соответствующие методы CG*
для установки заливки, как предложил Дэвид, вам нужно выполнить заполнение, используя следующее после того, как вы установите свойства заливки и обводки:
CGContextSetFillColorWithColor(context, [UIColor cyanColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor.CGColor);
CGContextFillPath(context);
CGContextStrokePath(context);