17

バックグラウンド

私は iOS 開発は初めてですが、縦書きのモンゴル文字を使用して最も初歩的なアプリを作成するためには、縦書きのUITextView. コードを共有している他のモンゴルのアプリ開発者を見つけられなかったので、自分で作ろうとしています。次の図に示すように、モンゴル語は上から下に書かれ、行は左から右に折り返されます。

ここに画像の説明を入力

スクロールは水平 (左から右) にする必要があります。

以前の質問で、私はミラー化されたフォントと回転とミラーリングの組み合わせを提案しましたUITextView(それは私が Android で行ったことだからです)。ただし、この回答を読んで、iOS のやり方 ( の使用などTextKit)をさらに調査した後UIVerticalTextView、通常のUITextView. そして、UITextViewUIScrollView からの継承を確認したので、サブクラス化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
    }
    

アップデート

これらの質問は、問題をより小さな部分に分解しようとする試みです。

そして別のアプローチで試してみてください:

4

1 に答える 1