Как нарисовать только контур текста, а не саму заливку? - PullRequest
2 голосов
/ 10 июня 2011

Я рисую текст в -drawRect этим методом:

[someText drawInRect:rect withFont:font lineBreakMode:someLineBreakMode alignment:someAlignment];

Я просто хочу нарисовать контур, но не заливку!

Я обнаружил, что могу установитьCGContextSetFillColorWithColor и просто предоставьте полностью прозрачный цвет.Но я боюсь, что это плохо сказывается на производительности, потому что, вероятно, оно выполняет всю тяжелую работу по рисованию за сценой с прозрачным цветом.

Есть ли способ просто отключить рисование заливкой, если требуется только рисование схемы?

1 Ответ

3 голосов
/ 10 июня 2011

Вы пробовали использовать kCGTextFillStroke?Это может сработать легко.Чтобы использовать его, просто переопределите drawTextInRect

- (void)drawTextInRect:(CGRect)rect {

  CGSize shadowOffset = self.shadowOffset;
  UIColor *textColor = self.textColor;

  CGContextRef c = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(c, 1);
  CGContextSetLineJoin(c, kCGLineJoinRound);

  CGContextSetTextDrawingMode(c, kCGTextStroke);
  self.textColor = [UIColor whiteColor];
  [super drawTextInRect:rect];

  CGContextSetTextDrawingMode(c, kCGTextFill);
  self.textColor = textColor;
  self.shadowOffset = CGSizeMake(0, 0);
  [super drawTextInRect:rect];

  self.shadowOffset = shadowOffset;

}

РЕДАКТИРОВАТЬ: Этот ответ также появляется в предыдущем воплощении этого вопроса: Как мне сделать UILabel отображать выделенный текст?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...