计算适合固定矩形TextView的字符

时间:2012-06-08 08:18:13

标签: ios nsstring uitextview

我在这里看到人们需要计算给定大小的NSString的大小,但我需要做相反的事情。

给定一个指定的rect(或固定的UITextView,或多行UILabel,没有滚动),我需要知道:

  • 如果它设法显示我的NSString的所有字符
  • 如果没有,显示的最后一个字符是什么

这样我就可以在另一个UITextView中显示剩余的文本(当然,如果我可以使用单个UITextView,我就不会遇到这个问题)。

起初这似乎很简单,但实际上我找不到方法,直觉上我认为我可以使用UITextView:

textView.contentSize.height;

或NSString:

sizeWithFont:constrainedToSize:lineBreakMode:

或两者的组合,但我需要精确,这些方法无法帮助我说出哪个是最后一个符合UITextView可见区域的字符。

不确定这是否真的可行,但我的客户认为编程iOS就像打印报纸并期望能够在图像周围设置文本格式......

1 个答案:

答案 0 :(得分:1)

您可以从一个字符长的字符串中获取一行文本的最大高度。

如果你使用sizeWithFont:constrainedToSize:lineBreakMode:那么你应该能够知道你的文本是否运行到多行(如果cgsize高度大于一行文本的高度)。

为了找出最后一个字符(或单词),你必须循环字符串的长度,在你去的时候添加字符(或单词)并检查cgsize高度何时增加以添加一个新行,将为您提供何时分割成多个字符串(对于多个字段/标签/文本视图)或何时在文本中插入换行符(如果使用单个多行文本视图或标签)的字符点。

我希望你找到一种更简单的方法......