Как сделать вертикальный UITextView путем подклассификации его из UIScrollView в Swift?

Фон

Я новичок в разработке iOS, но для того, чтобы начать делать даже самые рудиментарные приложения, используя вертикальный монгольский script, мне нужно иметь вертикальный UITextView. Я не нашел других разработчиков монгольских приложений, которые делились своим кодом, поэтому я пытаюсь сделать это сам. Монгольский написан сверху донизу, и линии обертываются слева направо, как показано на следующем рисунке:

enter image description here

Прокрутка должна быть горизонтальной (слева направо).

В предыдущем вопросе я предложил комбинацию зеркального шрифта и поворот и зеркалирование UITextView (потому что это то, что я сделал в Android), Однако после прочтения этого ответа и дальнейших исследований в iOS-способе делать вещи (например, используя TextKit), я думаю, что может быть лучше просто создать что-то вроде UIVerticalTextView с нуля, а не испортить нормальный UITextView. И поскольку я вижу, что UITextView inheirits из UIScrollView, я предполагаю, что я должен подкласс UIScrollView сделать UIVerticalTextView.

Где я сейчас

Ответ о котором я говорил выше подкласса UIView, но у меня возникли проблемы с прокруткой на работу. Это еще одна причина, по которой я хочу подкласс UIScrollView. Кроме того, это решение не передавало слова в каждой строке при изменении ориентации.

Я собрал следующие фрагменты, но я не уверен, как их собрать:

  • NSTextStorage - В этом не должно быть ничего другого. Он просто сохранит текст монгольского Юникода и любую информацию о стиле.
  • 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
    }
    

Обновления

Этими вопросами являются попытки разбить проблему на более мелкие части:

И попробуйте другой подход:

Ответ 1

Если у вас есть шрифт, который отображает ваш текст, самым простым способом было бы использовать обычный UITextView:

UITextView *textView = [[UITextView] alloc] init];

textView.transform = CGAffineTransformMakeRotation(-M_PI/2);

textView.text = @"YOUR TEXT HERE";

[textView setBaseWritingDirection:UITextWritingDirectionRightToLeft forRange:[textView textRangeFromPosition:[textView beginningOfDocument] toPosition:[textView endOfDocument]]];

textView теперь прокрутится вправо вниз, я предполагаю, что это должно произойти для монгольских?