2015-02-06 9 views
10

iOS7 e versioni successive, è possibile utilizzare - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context per calcolare la dimensione della stringa, ma sono confuso con i commenti su enum NSStringDrawingOptions. origineConfused by NSStringDrawingOptions elemento significato

NSStringDrawingUsesLineFragmentOrigin

Significa specificato è l'origine frammento linea, non la provenienza linea di base. Ma quale significato dell'origine del frammento di linea e dell'origine della linea di base.

Proprio come il WWDC 2013 Sessione 220 (layout di testo avanzati e di effetti con il testo Kit) PDF a pagina 95.

Se origine frammento linea significa che il punto blu, quale sia l'origine di base?

risposta

9

From the official documentation

Discussione

Se NSStringDrawingUsesLineFragmentOrigin è specificato in opzioni, avvolge il testo stringa come necessario per rendere in forma. Se la stringa è troppo grande per adattarsi completamente all'interno del rettangolo, il metodo ridimensiona il carattere o regola la spaziatura delle lettere per rendere la stringa adatta a entro i limiti specificati.

Se NSStringDrawingUsesLineFragmentOrigin non è specificato nelle opzioni, l'origine del rettangolo è la linea di base l'unica linea. Il testo verrà visualizzato sopra il rettangolo e non all'interno di esso. Per esempio , se si specifica un rettangolo che inizia da 0,0 e si disegna la stringa 'giustapposta', solo i discendenti di 'j' e 'p' saranno visti . Il resto del testo sarà sul bordo superiore del rettangolo.

Questo metodo disegna la linea utilizzando gli attributi specificati nella stringa attribuita . Se nella stringa sono presenti caratteri di nuova riga, questi caratteri vengono onorati e il testo successivo deve essere posizionato nella riga successiva sotto il punto iniziale.

Considerazioni speciali Questo metodo utilizza l'origine della linea di base con il valore predefinito , quindi esegue il rendering della stringa come una singola riga. Per eseguire il rendering della stringa in più righe, specificare NSStringDrawingUsesLineFragmentOrigin nelle opzioni.