Devo misurare la larghezza dei pixel di una stringa in Cocoa Touch. Qualcuno può indicarmi un link che spiega come farlo?Misurazione della larghezza dei pixel di una stringa
risposta
Su iPhone OS è leggermente diverso, invece guarda NSString UIKit Additions Reference. L'idea è la stessa di Cocoa per Mac OS X, ma ci sono più metodi.
Per singole linee di utilizzo di testo:
- (CGSize)sizeWithFont:(UIFont *)font
forWidth:(CGFloat)width
lineBreakMode:(UILineBreakMode)lineBreakMode
E per i testi multilinea uso:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(UILineBreakMode)lineBreakMode
L'uso di un UILineBreakMode
come argomento per le singole righe di testo possono essere fonte di confusione, ma questo è perché l'interruzione di riga viene anche utilizzata per definire come troncare il testo.
Questo sembra funzionare bene per i soliti tipi di carattere, ma non sembra dare i limiti esatti per i caratteri come Zapfino. Il codice di esempio è disponibile su http://paste.lisp.org/display/130803 e lo screenshot dell'output è disponibile all'indirizzo http://ScrnSht.com/juixwk. Qualche idea sul perché e come risolverlo? – trss
deprecato in iOS7 .. i documenti non si riferiscono a nessuna sostituzione .. ce n'è? – abbood
Gli attuali documenti iOS7 (Xcode 5.0.1) fanno riferimento a sostituzioni (che tendono ad essere solo iOS7). – JLundell
Dai uno sguardo allo NSString Application Kit Additions Reference, nello specifico boundingRectWithSize:options:attributes:
. Il valore restituito da quella routine dovrebbe darti la larghezza del tuo NSString
.
La documentazione non è molto chiara su come utilizzare effettivamente 'boundingRectWithSize: options: attributes:'. Sarebbe bello se potessi aggiungere un esempio di come utilizzare effettivamente questo metodo per misurare una stringa con un font particolare. – PeyloW
La soluzione di cui sopra è ora obsoleta. Controllare questo per iOS 7+
sizeWithFont:constrainedToSize:lineBreakMode
è deprecato ora. Utilizzare lo snippet di codice seguente,
UIFont *font=[UIFont fontWithName:@"Arial" size:16.f];
NSString *name = @"APPLE";
CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];
Non si dovrebbe chiedere una risposta generica all'obiettivo-c quando questa domanda riguarda davvero funzioni in Cocoa per Mac OS X o Cocoa Touch per iPhone OS. Objective-C è solo il linguaggio di programmazione che utilizza sia Cocoa che Cocoa Touch. – PeyloW
C'è qualche altro uso dell'obiettivo-c oltre alla programmazione per Mac OS o IOS? Se è così, è significativo? –