Voglio fare un disegno di NSAttributoString in caselle a larghezza fissa, ma sto avendo problemi a calcolare l'altezza giusta che occuperanno quando si disegna. Finora, ho provato:Come ottenere altezza per NSAttributoString a una larghezza fissa
Calling
- (NSSize) size
, ma i risultati sono inutili (per questo scopo), come vi daranno tutto quello larghezza i desideri di stringa.Chiamando
- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options
con un rettangolo a forma di larghezza che voglio eNSStringDrawingUsesLineFragmentOrigin
nelle opzioni, esattamente come sto usando nel mio disegno. I risultati sono ... difficili da capire; certamente non quello che sto cercando. (Come indicato in alcuni punti, tra cui this thread Cocoa-Dev).Creazione di un NSTextView temporanea e fare:
[[tmpView textStorage] setAttributedString:aString];
[tmpView setHorizontallyResizable:NO];
[tmpView sizeToFit];
Quando interrogo la cornice del tmpView, la larghezza è ancora, se lo desideri, e l'altezza è spesso corretta ... fino a arrivare a stringhe più lunghe, quando è spesso la metà delle dimensioni richieste. (Non sembra essere stata colpita una dimensione massima: un frame sarà alto 273.0 (circa 300 troppo corto), l'altro sarà 478.0 (solo 60-ish troppo corto)).
Apprezzerei qualsiasi suggerimento, se qualcun altro ha gestito questo.
Questa risposta è obsoleta. [La risposta di Graham] (http://stackoverflow.com/a/2460091/39155) di seguito è il metodo corretto a partire dal 2014. –