Ios 将长字符串插入UILabel,方法是剪切每个子字符串的尾部,并用分隔符分隔\n

Ios 将长字符串插入UILabel,方法是剪切每个子字符串的尾部,并用分隔符分隔\n,ios,objective-c,nsattributedstring,core-text,Ios,Objective C,Nsattributedstring,Core Text,我需要有一个我的长多行文字字符串智能多行剪切 我原来有以下几点: 在上面的屏幕上,我指出了显示文本的狭窄区域。 最后,我想得到以下信息: 我想了解的主要思想是如何将多行文本作为一个整体进行截断(而不是通过字符串将其分隔,截断每个字符串,然后重新连接) 更详细地说,我有3个字符串,由\n分隔,并连接在一个长字符串中 我想在以下条件下,将此长字符串作为属性字符串放在确定的UILabel中: 第一个字符串必须有一行 第二个和第三个字符串最多必须有两行 因此,我不仅要通过标签框截断整个长字符串的尾部

我需要有一个我的长多行文字字符串智能多行剪切

我原来有以下几点:

在上面的屏幕上,我指出了显示文本的狭窄区域。 最后,我想得到以下信息:

我想了解的主要思想是如何将多行文本作为一个整体进行截断(而不是通过字符串将其分隔,截断每个字符串,然后重新连接)

更详细地说,我有3个字符串,由
\n
分隔,并连接在一个长字符串中

我想在以下条件下,将此长字符串作为属性字符串放在确定的UILabel中:

  • 第一个字符串必须有一行
  • 第二个和第三个字符串最多必须有两行
  • 因此,我不仅要通过标签框截断整个长字符串的尾部,而且要独立地截断由
    \n
    分隔的每个字符串的尾部

    我知道我可以动态地完成这项工作:将每个子字符串按单词分割并连接单词,直到所需的行数超过最大允许行数


    但我相信有一些优雅的方法可以使用格式化或CoreText来实现这一点。

    您可以使用一些优雅的regexp:)

    例如,这一个将从每个子字符串中只留下80个第一个符号

    s/^(.{1,80})(?<!\s)(?!\w)/\1/g
    
    s/^(.{1,80})(?
    
    这一个将只剩下不超过80个,但只在空格中中断

    使用
    UILabel
    换行和设置
    UILabel
    帧宽在WWDC上有一个使用文本工具包的高级尾部截断示例(尽管案例与您的不同):会话“文本工具包的高级文本布局和效果”@RameshKumar和我如何控制整个UILabel文本中独立子字符串的行数?假设这是一个本质上不同的问题。@malex希望此链接能帮助您,但悬赏太小:)主要问题是动态计算每个字符串的字母数。不,我有类似的认识,这是不合适的,看起来不好。
    s/^(.{1,80})(?<!\s)(?!\w)/\1/g