您好,有没有办法在特定行拆分 UITableView 的字符串,以将“其余”(数据的第二部分)放在自己的单元格中
NSString *data;
CGsize *size = [data sizeOfStringWithFont:[UIFont systemFontOfSize:14] constrainToWidth:280.0];
如果 size.height eg 大于 1500 我想在这一行位置分割字符串!
谢谢你
您好,有没有办法在特定行拆分 UITableView 的字符串,以将“其余”(数据的第二部分)放在自己的单元格中
NSString *data;
CGsize *size = [data sizeOfStringWithFont:[UIFont systemFontOfSize:14] constrainToWidth:280.0];
如果 size.height eg 大于 1500 我想在这一行位置分割字符串!
谢谢你
我认为 Kendall 的想法是正确的,但是应该颠倒受约束的大小以根据自动换行获得确切的高度。取一个与单元格宽度相同但高度大于您期望的最大高度的样本 CGSize。在下面的示例代码中,textSize将包含您的字符串的高度,因为它会出现在您的单元格中,具有无限的高度。
CGSize sz = CGSizeMake (
yourCellWidth,
999999.0f );
CGSize textSize = [yourString sizeWithFont:yourCellfont
constrainedToSize:sz
lineBreakMode:UILineBreakModeWordWrap];
如果高度大于 1500,您可以从末尾开始挑选子字符串 (substringWithRange) 并像上面一样测量它们,直到您得到 >= textSize 返回的大于 1500 的余数。
使用“constrainedToSize”(而不仅仅是宽度)并尽可能多地渲染。
如果您真的想准确地获取不适合的文本,您将不得不进行本质上的搜索,一次添加一个单词,然后进行大小检查以查看您获得了多高。您可以从粗略估计开始,将整个字符串限制为仅一行高且宽度无限的东西(例如 999999),然后将宽度划分为您希望允许的任意多行,以获得添加的粗略起点/从字符串中删除单词(由于自动换行,它不准确)。
从根本上讲,尽管将剩余的文本放入另一个单元格中似乎很奇怪。您真的确定您不只是想用文本更改单元格的高度以使其适合整个内容吗?