Quartz 2d / Core Graphics: Как правильно нарисовать текст?


Я занимался этим некоторое время, кажется, что есть много способов сделать это в quartz 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 6

3 ответа:

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

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

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

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