Sto cercando di ottenere un NSString suddiviso in linee per adattarsi alla larghezza desiderata (come accadrebbe all'interno di sizeWithFont:constrainedToSize:
). C'è un modo migliore per fare questo di indovinare dove sarebbero avvenute le interruzioni in sizeWithFont
?Rompere NSString in linee (per adattarsi alla larghezza desiderata)
risposta
Se NSLayoutManager
non è effettivamente disponibile, è possibile che si rimanga una soluzione più inefficiente: a partire dalla prima parola della stringa, aggiungendo ogni parola successiva e utilizzando il metodo sizeWithFont:
(ecc.) Sulla stringa risultante. Quando l'altezza delle modifiche restituite è CGSize
, la parola aggiunta più di recente è stata quella che ha causato l'interruzione di riga e quindi è possibile dividere la stringa lì.
Ecco cosa ho concluso con – Pyetras
Aggiornamento: Questo apparentemente si applica solo sulla piattaforma Mac. Anche se NSLayoutManager fa esplicitamente riferimento alla Guida al disegno per archi di iPhone (a partire da dicembre 2009), né esso né NSAttributo sono disponibili sulla piattaforma iPhone. Ci scusiamo per il rumore.
risposta originale
NSLayoutManager è tuo amico, se stai cercando di dividere la stringa stessa in linee di una certa larghezza, con una serie di attributi (ad esempio, è necessario conoscere i luoghi reali dove è avvolta la stringa).
Se si sta solo cercando di avvolgere le linee quando disegno e non si cura, dove, (AppKit integrazioni) i metodi di NSAttributedString -drawInRect: o -drawWithRect:options: farà bene.
Né NSLayoutManager né NSAttributedString sono disponibili su iPhone. –
Non ho intenzione di disegnare le linee (immediatamente), quindi né le aggiunte NSAttributedString né NSString + UIKit aiuteranno. – Pyetras
Ole: confuso. NSLayoutManager fa esplicitamente riferimento alla String Programming Guide nella libreria iPhone Dev Center: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Strings/Articles/DrawingStrings.html –
Aggiornamento: Sulla base del commento qui sotto (è possibile disegnare la stringa, ma non è possibile disegnare uno sfondo per coprire la stringa), penso che la soluzione migliore sarebbe quella di utilizzare un UIWebView e utilizzare CSS per disegnare il tuo sfondo.
Il NSString UIKit Additions potrebbe soddisfare le vostre esigenze, in particolare
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode;
e/o
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode
alignment:(UITextAlignment)alignment;
Controlla i commenti sulla domanda e la risposta di Joshua qui sotto: disegnare le linee non è il problema. In realtà ha bisogno di sapere dove sono le interruzioni di riga, allo scopo di disegnare uno sfondo che si estende solo alla fine di ogni riga. –
NSLayoutManager è disponibile in quanto iOS 7. La documentazione è here.
- 1. Android star rating come adattarsi alla larghezza
- 2. Ridimensionamento di UIImageView per adattarsi alla larghezza dello schermo
- 3. Swift - Regolazione fontSize per adattarsi alla larghezza del layout (programmaticamente)
- 4. CSS: Ridimensionamento automatico div per adattarsi alla larghezza del contenitore
- 5. Come troncare una NSString in base alla larghezza grafica?
- 6. WPF Label adattarsi FontSize alla sua larghezza e l'altezza
- 7. Ridimensiona la larghezza del sito per adattarsi alla larghezza dello schermo dell'iPad
- 8. Come inserire testo per adattarsi alla finestra in XSLT
- 9. Come rompere lunga serie di linee multiple
- 10. WPF Stampa per adattarsi alla pagina
- 11. Tronca una larghezza NSS alla larghezza
- 12. Ridimensionare automaticamente la larghezza di DataGridCoulmn/AdvancedDataGridColumn per adattarsi contenuti
- 13. Regolazione della linea per adattarsi alla nostra testa in imageview
- 14. Rompere barra, non non rompere
- 15. Rompere una linea di pitone su più linee?
- 16. Larghezza cella dinamica di UICollectionView in base alla larghezza dell'etichetta
- 17. Zoom per adattarsi alla posizione corrente e annotazione sulla mappa
- 18. Autoresize UICollectionView height per adattarsi alla sua dimensione del contenuto
- 19. Immagine di sfondo CSS per adattarsi all'altezza, la larghezza dovrebbe ridimensionare automaticamente in proporzione
- 20. Vista tabella Java ridimensiona per adattarsi alla finestra
- 21. Zoom per adattarsi: PDF incorporato in HTML
- 22. Codice di stato HTTP 411 - lunghezza desiderata
- 23. jQuery - ridimensionamento dell'immagine per adattarsi div
- 24. larghezza: 100% rispetto alla larghezza massima: 100%
- 25. Come calcolare la dimensione di un UIFont quando il testo nell'etichetta è vincolato per adattarsi alla larghezza?
- 26. Ridimensionamento di ImageView per adattarsi alle proporzioni
- 27. Plugin jQuery per adattarsi al testo in un elemento definito larghezza/altezza
- 28. Imposta la larghezza del div esterno per adattarsi automaticamente alle div interne
- 29. Ridimensionamento immagine per adattarsi UIImageView
- 30. Matplotlib: traccia linee con larghezza data in coordinate dati
Potresti entrare un po 'più in dettaglio sul motivo per cui hai bisogno delle linee separate? Se vuoi solo disegnare la corda in uno spazio dato, questo è abbastanza semplice. –
Sto creando uno sfondo - come quello che si ottiene selezionando il testo - per un'etichetta. La sua larghezza varia per ogni linea (con una lunghezza diversa), quindi ne avrò bisogno separatamente. – Pyetras