2010-07-05 4 views
6

Sono stato a questo per un po ', sembra che ci sono molti modi per andare su questo in Quartz 2D:Quartz 2d/Core Grafica: qual è il modo giusto per disegnare del testo?

1) Disegnare il testo utilizzando metodi Graphics Core ...

CGContextSelectFont 
CGContextSetRGBFillColor 
CGContextShowTextAtPoint 

e così su, che è un livello orribilmente basso.

2) utilizzando NSString drawAtPoint

(finora il metodo che mi piace)

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

3) utilizzando UILabel

ho letto da qualche parte, ma non troppo sicuro se questo è possibile . ma sto pensando che l'istanziazione di un UILabel all'interno di drawRect sarebbe piuttosto costosa, in quanto drawRect viene probabilmente chiamato anche zillion. ??


sto facendo ok con 2. (utilizzando NSString drawAtPoint), per il momento, ma ho voluto ottenere alcune opinioni. Di nuovo, sto cercando di creare del testo all'interno di drawRect (ho sottoclassato una vista) perché sto anche disegnando forme insieme al testo, qual è la strada giusta?

Grazie

risposta

9

# 1 non supporta caratteri internazionali. Quindi, non usarlo se lo si usa per disegnare testi immessi da un utente.

Quindi, utilizzare # 2 a meno che non si sia assolutamente sicuro che il testo contenga solo caratteri ASCII standard.

3

# 2 è come io in genere faccio a meno che non ho bisogno di un controllo più preciso di utilizzare CG/CT

1

Mentre sono d'accordo con Yuji che non dovresti usare # 1, aggiungerei che, se possibile, dovresti usare una UILabel invece di disegno personalizzato, perché se puoi evitare l'implementazione -drawRect: niente, dovunque , dovresti.