在NSString的特定行拆分字符串

时间:2009-06-29 15:37:21

标签: iphone objective-c uitableview nsstring split

你好有没有办法在特定的行拆分UITableView的字符串,把“休息”(数据的第二部分)放在一个自己的单元格中

NSString *data;    
CGsize *size = [data sizeOfStringWithFont:[UIFont systemFontOfSize:14] constrainToWidth:280.0];

如果size.height例如大于1500我想在这个行位置拆分字符串!

谢谢

2 个答案:

答案 0 :(得分:1)

使用“constrainedToSize”(而不仅仅是宽度)并尽可能多地渲染。

如果你真的想要完全不适合的文字,你将不得不做一个基本上搜索,一次添加一个单词,然后进行大小检查,看看你有多高。您可以通过将整个字符串限制为只有一行高且无限宽度(例如999999)的粗略估计开始,然后将宽度分成许多行,您希望这些行能够获得粗略的起点以便添加/从字符串中删除单词(因为自动换行而不准确)。

从根本上说,将剩余的文本放在另一个单元格中似乎很奇怪。你真的确定你不是只想用文本改变单元格的高度以使其适合整个事物吗?

答案 1 :(得分:1)

我认为肯德尔有正确的想法,但是应该颠倒约束的尺寸以获得基于自动换行的精确高度。获取与单元格宽度相同的示例CGSize,但其高度大于您期望的最大高度。在下面的示例代码中, textSize 将包含字符串的高度,就像它在单元格中显示的高度无限制一样。

CGSize sz = CGSizeMake (
   yourCellWidth,
   999999.0f );

CGSize textSize = [yourString sizeWithFont:yourCellfont 
                  constrainedToSize:sz
                  lineBreakMode:UILineBreakModeWordWrap];

如果高度大于1500,你可以从末尾开始挑选子串(substringWithRange)并像上面一样测量它们,直到你得到一些> = textSize返回的1500以上的余数。