【问题标题】:Split String at specific line for NSString在 NSString 的特定行拆分字符串
【发布时间】:2009-06-29 15:37:21
【问题描述】:

您好,有没有办法在特定行拆分 UITableView 的字符串,以将“其余”(数据的第二部分)放在自己的单元格中

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

如果 size.height 例如大于 1500 我要在这一行位置分割字符串!

谢谢

【问题讨论】:

    标签: iphone objective-c uitableview nsstring split


    【解决方案1】:

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

    如果您真的想要准确地获取不适合的文本,您将不得不进行基本的搜索,一次添加一个单词,然后进行大小检查以查看您获得了多高。您可以从粗略估计开始,将整个字符串限制为仅一行高且宽度无限的东西(例如 999999),然后将宽度划分为您希望允许的任意多行,以获得添加的粗略起点/从字符串中删除单词(由于自动换行,它会不准确)。

    从根本上说,将剩余的文本放入另一个单元格似乎很奇怪。你真的确定你不想简单地改变带有文本的单元格的高度以使其适合整个内容吗?

    【讨论】:

      【解决方案2】:

      我认为 Kendall 的想法是正确的,但是应该颠倒受限制的大小以根据自动换行获得确切的高度。取一个与单元格宽度相同但高度大于您期望的最大高度的样本 CGSize。在下面的示例代码中,textSize 将包含您的字符串的高度,因为它会出现在您的单元格中,具有无限制的高度。

      CGSize sz = CGSizeMake (
         yourCellWidth,
         999999.0f );
      
      CGSize textSize = [yourString sizeWithFont:yourCellfont 
                        constrainedToSize:sz
                        lineBreakMode:UILineBreakModeWordWrap];
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2015-12-18
        • 1970-01-01
        • 2021-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多