如果其内容超过Swift中的数字行限制,则拆分文本

时间:2018-05-20 15:28:38

标签: ios swift string uitextview line

条件:

  • 最多可包含X行的UITextView:禁用滚动。 (例如; max lines = 8)
  • 巨大的文字内容。 (例如; 25行)
  • 语言是英语。 (自动换行)

如果内容超出数字限制,我该如何拆分文字? 我想将文本拆分成数组。在这个条件之后,文本应该分成4个元素。

更新 实际上我想要实现的就像我有一个长文本并且我有修复文本容器大小(例如UITextView)无法显示所有内容,然后有一个下一个按钮来重置容器并显示左侧内容。我认为分裂字符串会有所帮助,但这似乎是一个错误的选择。我正在尝试Matt的建议,并希望问题能够得到解决。

1 个答案:

答案 0 :(得分:1)

你的目标不是很好。不要将文本拆分为四个文本数组,最好利用Text Kit并让布局管理器将文本拆分为四个文本容器(一个NSLayoutManager,四个NSTextContainers)。

这甚至可以与您当前使用的文本视图结合使用以显示:四个文本容器可能属于四个文本视图,现在您有四个自动分发的不可编辑的不可滚动文本视图它们之间的文本,您可以在这些文本视图之间切换。

这是一个只有两个文字视图的例子:

enter image description here

这两个UITextView对象由一个 NSLayoutManager管理,因此当第一个文本视图的文本变得太长时,自动流入第二个文本图。

如果真的想要,我想你可以做我刚刚说过的话,然后使用布局管理器询问它做了什么,即向后读取将字符串行到字符范围的字形,并找出如何它将文本分成四个文本容器;但是当你考虑到问题在你开始这么做之前就已经解决了,这似乎很愚蠢。