Если вы пришли к этому вопросу на основе названия, но не заинтересованы в монгольском, вы можете искать этот Q & A вместо:
Я изучаю Swift для разработки приложений iOS для традиционного монгольского. Проблема в том, что традиционный монгольский язык написан вертикально сверху донизу и слева направо. Мой вопрос заключается в том, как отображать текст по вертикали и все еще работать с оберткой строк?
Если вы останетесь со мной на минутку, я постараюсь объяснить проблему более четко. Ниже приведен образ такого текстового представления, которого я хотел бы достичь. Если иностранный script отбрасывает вас, я включил текст на английском языке, который следует по той же схеме. На самом деле, если приложение имеет какой-либо текст на английском языке, вот как он должен выглядеть.
Для простой однолинейной UILabel будет работать поворот на 90 градусов по часовой стрелке. Однако для многострочного UITextView мне нужно иметь дело с оберткой строк. Если я просто сделаю обычный поворот на 90 градусов, первое, что написано, окажется на последней строке.
До сих пор я сделал план, который, как я думаю, может решить эту проблему:
- Создайте собственный шрифт, в котором все буквы зеркалируются вертикально.
- Поворот текстового вида на 90 градусов по часовой стрелке.
- Зеркальное отображение текста по горизонтали.
Это должно позаботиться об обертке текста.
Я могу сделать зеркальный шрифт. Тем не менее, я не знаю, как сделать Swift кодирование для вращения и зеркалирования UITextView. Я нашел следующие ссылки, которые, похоже, дают подсказки частям решения, но все они находятся в Objective C, а не в Swift.
- Как повернуть под-представления вокруг своих собственных центров?
- Поверните UIView вокруг своего центра, сохраняя его размер
- iOS: Зеркальное содержимое на экране
- Зеркалирование UIView
В магазине приложений есть традиционные монгольские приложения (например, this и это), но я еще не нашел никого, кто делится своим исходным кодом, поэтому я не знаю, что они делают за кулисами, чтобы отобразить текст. Я планирую сделать свой код открытым исходным кодом, чтобы другим в будущем не было разработано приложений для нескольких миллионов человек, которые читали традиционный монгольский язык. Любая помощь, которую вы можете оказать этому начинанию, будет высоко оценена не только мной, но и монгольским народом. Даже если вы не знаете себя, это поможет повысить этот вопрос, чтобы сделать его более заметным.
Update
Ответ на@sangonz по-прежнему остается отличным ответом, но я временно не обозначил его как принятый ответ, потому что я просто не мог заставить все работать. В частности:
- Включение прокрутки (путем встраивания пользовательского представления в scrollview или под подклассом UIScrollView). В проекте github @sangonz сказал, что это должно быть легко, но это было не для меня.
- Получение ретрансляции (а не растяжения) строк слова при изменении ориентации. Я думаю, что это не должно быть слишком сложно решить с небольшим количеством исследований.
- Почему текстовые строки не пересекаются до края представления? В нижней части есть большая щель.
-
Как отключить NSTextStorage пользовательского вертикального представления от другого UITextView.(см. этот вопрос)
До этого момента Я использовал оригинальный метод, предложенный выше, но я действительно хочу получить что-то вроде того, что предложил @sangonz.
Я также рассматриваю альтернативные методы, такие как
- Использование основного текста, Недостаток: он чувствует, как изобретать колесо.
- Использование WebKit, Недостаток: Apple больше не использует WebKit для своих
UITextView