Как сделать вертикальный UITextView, разделив его на UIScrollView в Swift?

Фон

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

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

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

Где я сейчас нахожусь

Ответ, который я упомянул выше в подклассе UIView но у меня было много проблем с прокруткой на работу. Это еще одна причина, по которой я хочу подкласс 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
    }
    

Обновления

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

И пытаюсь с другим подходом:

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 Теперь прокрутите вправо, а не вниз, я предполагаю, что должно произойти для монгольского языка?

Другие вопросы по тегам