Ho bisogno di spostare il testo che l'utente ha inserito in una grande linea multipla UITextView
in una più piccola (ma ancora multilinea) UITextView
*. Se l'utente ha inserito più testo di quello che verrà visualizzato nella vista più piccola, voglio troncare il testo in modo che si adatti a tutto il testo (troncato) visibile. (Né il grande UITextView
né quello più piccolo dovrebbe scorrere.)Lunghezza stringa con font specificato per adattarsi a UITextView
Qual è il modo migliore per farlo?
È possibile utilizzare un ciclo, accorciando la stringa di un carattere ogni volta, quindi utilizzare NSString
's sizeWithFont: constrainedToSize: lineBreakMode:
per individuare l'altezza di questa stringa più corta, quindi confrontarla con l'altezza che ho disponibile nel mio più piccolo UITextView
, termina il ciclo quando la stringa si adatta - ma sembra lento e impacciato. Ci deve essere un modo migliore.
Mi piacerebbe solo dire alla destinazione UITextView
di troncare il suo membro displayText mentre lo visualizza sullo schermo, ma non sono riuscito a trovare un modo per farlo.
* Altro contesto su questo, da un commento che ho fatto qui di seguito:
Ho un app paesaggio. Modifico il layout della vista in base alla foto scelta dall'utente. Se si tratta di una foto di paesaggio, la didascalia è più piccola - solo una linea nella parte inferiore della foto. Se sceglie una foto ritratto, c'è molto spazio che posso usare per la didascalia a lato della foto, quindi la didascalia è più grande.
Se l'utente modifica l'orientamento della foto da verticale a orizzontale, quindi voglio troncare il testo e quindi consentirle di modificarlo in modo che abbia senso. Potrei semplicemente farlo, ma preferirei conservarlo per minimizzare la sua digitazione.
questo codice è fantastico, grazie, ma ho trovato due situazioni in cui fallisce: 1) se hai un sacco di spazi sulla stringa 2) il "<" nella riga "if (stringSize.height
SpaceDog