Sono nuovo nello sviluppo di iOS, ma per iniziare a realizzare anche le app più rudimentali utilizzando lo script mongolo verticale, ho bisogno di avere uno UITextView
verticale. Non ho trovato altri sviluppatori di app mongoli che condividono il loro codice, quindi sto provando a farlo da solo. Mongolo è scritto da cima a fondo e linee avvolgere da sinistra a destra, come illustrato nel grafico seguente:Come creare un UITextView verticale sottoclassandolo da UIScrollView in Swift?
scorrimento deve essere orizzontale (sinistra a destra).
In un previous question ho proposto una combinazione di un carattere con mirroring e una rotazione e il mirroring di UITextView
(perché è quello che avevo fatto in Android). Tuttavia, dopo aver letto this answer e compiuto ulteriori ricerche sul modo di fare iOS (come l'uso di TextKit
), penso che potrebbe essere meglio creare qualcosa come UIVerticalTextView
da zero invece di fare i conti con il normale UITextView
. E dal momento che vedo che UITextView
inheirits from UIScrollView, presumo che dovrei sublassificare UIScrollView
per rendere il UIVerticalTextView
.
dove mi trovo in ora
Il answer I mentioned above sottoclasse UIView
ma ho avuto un sacco di problemi a scorrimento per funzionare. Questo è un altro motivo per cui voglio sottoclasse UIScrollView
. Anche quella soluzione non ha rinviato le parole in ogni riga quando c'era un cambiamento di orientamento.
che ho raccolto i seguenti pezzi, ma non sono sicuro come metterli insieme:
- NSTextStorage - non ci dovrebbe essere nulla di diverso con questo. Memorizzerà solo il testo Unicode mongolo e tutte le informazioni sullo stile.
- NSTextContainer - L'altezza e la larghezza devono essere cambiate per dare la dimensione del contenitore del testo verticale. (Penso di sì, comunque. A meno che non si possa fare altrove.)
- NSLayoutManager - Qualcosa di speciale deve essere fatto qui o è quello curato dallo
UIVerticalTextView
? UIVerticalTextView - Questa sarà una sottoclasse di
UIScrollView
ma quali sono i metodi che devono essere aggiunti e/o sovrascritti?class UIVerticalTextView: UIScrollView { // Which properties to include? // - TextStorage // - TextContainer // - LayoutManager // which methods to override? // which methods to add to give minimal functionality like UITextView? // - init // = text }
Aggiornamenti
Queste domande sono tentativi di rompere il problema in parti più piccole:
E cercando con un approccio diverso:
- Are rotated Views compatible with Auto Layout?
- Rotating a view in layoutSubviews Questo è in realtà una soluzione di lavoro ora. Tuttavia, in pratica implica l'impilamento di tre viste l'una sull'altra. Preferirei comunque creare una sottoclasse UIScrollView personalizzata che utilizzi TextKit come ho presentato nella mia domanda corrente.
Come si desidera visualizzare i caratteri? Hai un font? –
@NilsZiehn Sì, ho un font con glifi mongoli. Per semplicità, tuttavia, si può presumere che debba essere visualizzato solo l'inglese. – Suragch
Quali problemi hai avuto con CGAffineTransformMakeRotation? Stavo scavando attraverso le tue domande correlate e ho visto che avevi giocato con questo. –