背景
我是 iOS 开发的新手,但为了开始使用垂直蒙古文脚本制作最基本的应用程序,我需要一个垂直的UITextView
. 我还没有找到任何其他蒙古应用程序开发人员共享他们的代码,所以我正在尝试自己制作。蒙古语从上到下书写,从左到右换行,如下图所示:
滚动应该是水平的(从左到右)。
在上一个问题中,我提出了一个镜像字体与旋转和镜像的组合UITextView
(因为这是我在 Android 中所做的)。但是,在阅读了这个答案并进一步研究了 iOS 的做事方式(比如使用TextKit
)之后,我认为UIVerticalTextView
从头开始创建类似的东西而不是弄乱正常的UITextView
. 而且由于我看到UITextView
UIScrollView的继承,我认为我应该继承子类UIScrollView
来制作UIVerticalTextView
.
我现在在哪里
我上面提到的答案是子类UIView
,但我在滚动工作时遇到了很多麻烦。这是我想要子类化的另一个原因UIScrollView
。此外,当方向发生变化时,该解决方案也没有重新排列每行中的单词。
我收集了以下部分,但我不知道如何将它们放在一起:
- NSTextStorage - 这不应该有什么不同。它只会存储蒙古语 Unicode 文本和任何样式信息。
- NSTextContainer - 需要切换高度和宽度以提供垂直文本容器大小。(无论如何,我认为是这样。除非这可以在其他地方完成。)
- NSLayoutManager - 这里有什么特别需要做的,还是由 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 }
更新
这些问题试图将问题分解成更小的部分:
并尝试使用不同的方法:
- 旋转视图是否与自动布局兼容?
- 在 layoutSubviews 中旋转视图这实际上现在有一个可行的解决方案。但是,它基本上涉及将三个视图堆叠在一起。正如我在当前问题中提出的那样,我仍然希望创建一个使用 TextKit 的自定义 UIScrollView 子类。