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