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