Как сделать вертикальный 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 }
Обновления
Эти вопросы являются попытками разбить проблему на более мелкие части:
И пытаюсь с другим подходом:
- Совместимы ли повернутые виды с Auto Layout?
- Вращение представления в layoutSubviews Теперь это действительно рабочее решение. Тем не менее, это в основном включает в себя наложение трех видов друг на друга. Я все еще предпочел бы сделать собственный подкласс UIScrollView, который использует TextKit, как я представил в моем текущем вопросе.
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
Теперь прокрутите вправо, а не вниз, я предполагаю, что должно произойти для монгольского языка?