2010-07-05 5 views
6

Ich habe für eine Weile auf diese gewesen, so scheint es, dass es dazu in Quarz 2d zu gehen viele Möglichkeiten, ist:Quarz 2d/Core Graphics: Was ist der richtige Weg, um etwas Text zu zeichnen?

1) Zeichnen von Text mit Core-Grafik-Methoden ...

CGContextSelectFont 
CGContextSetRGBFillColor 
CGContextShowTextAtPoint 

und auf und auf, das ist schrecklich niedriges Niveau.

2) NSString drawAtPoint mit

(bisher die Methode Ich mag)

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

3) mit UILabel

ich das irgendwo gelesen habe, aber nicht sicher, ob dies möglich ist . aber ich denke, dass die Instantiierung eines UILabel innerhalb von DrawRect ziemlich kostspielig wäre, da DrawRect wahrscheinlich unzählige Male aufgerufen wird. ??


Ich mache ok mit 2. Zur Zeit (NSString drawAtPoint mit), aber ich wollte ein paar Meinungen bekommen. Wieder versuche ich, Text in drawRect zu erstellen (ich habe eine Ansicht subclassiert), weil ich auch Formen mit Text zeichne, was ist der richtige Weg?

Dank

Antwort

9

# 1 nicht internationale Zeichen unterstützen müssen. Verwenden Sie es also nicht, wenn Sie es verwenden, um von einem Benutzer eingegebene Texte zu zeichnen.

Also, bitte verwenden Sie # 2, außer Sie sind absolut sicher, dass der Text nur Standard-ASCII-Zeichen enthält.

3

# 2 ist, wie ich es in der Regel tun, wenn ich die präzisere Kontrolle der Verwendung von CG/CT

1

Während ich mit Yuji zustimmen, dass Sie nicht # 1 verwenden sollten, würde ich hinzufügen, dass dann möglich, wenn überhaupt Sie ein UILabel statt von benutzerdefinierter Zeichnung verwenden sollten, denn wenn man vermeiden kann -drawRect Umsetzung: überhaupt, überall , Du solltest.