Come disegnare testo troncato con ATSUI
-
29-09-2019 - |
Domanda
Come faccio a disegnare testo troncato con ATSUI ?? Ho un'applicazione legacy che utilizza QuickDraw API. utilizza StringWidth, TruncString e funzioni coulisse. Ho potuto sostituire lo StringWidth e coulisse con ATSUMeasureTextImage e ATSUDrawText di ATSUI. Tuttavia non ho potuto trovare un modo per troncare una stringa in modo che si inserisca in un rettangolo.
Ho usato al quarzo con QuickDraw prima di scegliere ATSUI. Quarzo non fornisce alcuna funzione di stimare le dimensioni (in pixel) del testo elaborato.
CGContextSelectFont(cgContext,
"Geneva", 12.0, kCGEncodingMacRoman);
CGContextSetTextMatrix(cgContext,
CGAffineTransformMake(1.0,0.0, 0.0,
-1.0, 0.0, 0.0));
CGContextShowTextAtPoint(cgContext,
inPoint.h, inPoint.v + 12.00, (const
char*)&(inString[1]), inString[0]);
C'è qualche funzione nel ATSUI che fa stringa troncamento come TruncString ... ?? se non Come faccio a disegnare una stringa troncata ad un rettangolo.
Grazie, Abhinay.
Soluzione
Si desidera utilizzare HIThemeGetTextDimensions
per misurare la stringa con una politica di troncamento. Essa vi darà la larghezza rettangolo e l'altezza e la linea di base; si può fare un CGRect con quella larghezza e altezza e impostare la sua origine a dove si desidera che il testo.
Sorprendentemente, questa funzione sembra essere ancora supportato in 64 bit, anche se non è mai stata documentata (non v'è mai stata alcuna documentazione di riferimento a tutti per HITheme). Cercarlo nelle intestazioni per i dettagli.