バックグラウンド
私は iOS 開発は初めてですが、縦書きのモンゴル文字を使用して最も初歩的なアプリを作成するためには、縦書きのUITextView
. コードを共有している他のモンゴルのアプリ開発者を見つけられなかったので、自分で作ろうとしています。次の図に示すように、モンゴル語は上から下に書かれ、行は左から右に折り返されます。
スクロールは水平 (左から右) にする必要があります。
以前の質問で、私はミラー化されたフォントと回転とミラーリングの組み合わせを提案しましたUITextView
(それは私が Android で行ったことだからです)。ただし、この回答を読んで、iOS のやり方 ( の使用などTextKit
)をさらに調査した後UIVerticalTextView
、通常のUITextView
. そして、UITextView
UIScrollView からの継承を確認したので、サブクラス化UIScrollView
してUIVerticalTextView
.
今いる場所
上記の答えはサブクラス化さUIView
れましたが、スクロールを機能させるのに苦労していました。これが、サブクラス化するもう 1 つの理由ですUIScrollView
。また、そのソリューションは、向きが変わったときに各行の単語を再レイアウトしませんでした。
以下の部品を集めましたが、それらを組み合わせる方法がわかりません。
- NSTextStorage - これと何も変わらないはずです。モンゴル語の Unicode テキストとスタイル情報だけを保存します。
- NSTextContainer - 垂直テキスト コンテナーのサイズを指定するには、高さと幅を切り替える必要があります。(とにかく、そう思います。これがどこかでできる場合を除きます。)
- NSLayoutManager - ここで何か特別なことをする必要がありますか、それとも によって処理され
UIVerticalTextView
ますか? UIVerticalTextView - これはのサブクラスになりますが、
UIScrollView
追加および/またはオーバーライドする必要があるメソッドは何ですか?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 }
アップデート
これらの質問は、問題をより小さな部分に分解しようとする試みです。
そして別のアプローチで試してみてください:
- 回転したビューは自動レイアウトと互換性がありますか?
- layoutSubviews でのビューの回転これには実際に有効な解決策があります。ただし、基本的には、3 つのビューを互いに積み重ねる必要があります。現在の質問で提示したように、TextKit を使用するカスタム UIScrollView サブクラスを作成したいと思います。