Quartz 2d / Core Graphics: Как правильно рисовать текст? - PullRequest
6 голосов
/ 06 июля 2010

Я занимался этим некоторое время, кажется, что есть много способов сделать это в кварце 2d:

1) Рисовать текст, используя основные графические методы ...

CGContextSelectFont
CGContextSetRGBFillColor
CGContextShowTextAtPoint

и далее и далее, что является ужасно низким уровнем.

2) с использованием NSString drawAtPoint

(пока что мне нравится метод)

NSString* text = @"Hello";
[text drawAtPoint:point withFont:font];

3) с использованиемUILabel

Я где-то читал это, но не слишком уверен, возможно ли это.но я думаю, что создание UILabel в drawRect будет довольно дорогостоящим, поскольку drawRect, вероятно, будет вызываться миллионы раз.??


Сейчас я в порядке с 2. (используя NSString drawAtPoint), но я хотел бы получить некоторые мнения.Опять же, я пытаюсь создать текст в drawRect (я разделил представление на подклассы), потому что я также рисую фигуры вместе с текстом, каков правильный путь?

Спасибо

Ответы [ 3 ]

9 голосов
/ 06 июля 2010

# 1 не поддерживает международные символы. Так что не используйте его, если вы используете его для рисования текстов, введенных пользователем.

Итак, пожалуйста, используйте # 2, если вы не абсолютно уверены, что текст содержит только стандартные символы ASCII.

3 голосов
/ 06 июля 2010

# 2 - это то, как я обычно это делаю, если мне не нужен более точный контроль использования CG / CT

1 голос
/ 12 февраля 2013

Хотя я согласен с Юджи, что вы не должны использовать # 1, я бы добавил, что, если это вообще возможно, вы должны использовать UILabel вместо пользовательского чертежа, потому что, если вы можете избежать реализации -drawRect: atвсе, где угодно, вы должны.

...