Swift:字符串-计算高处的第一个字符位置?

时间:2019-03-24 20:23:47

标签: swift string label

我想缩短长字符串,并以结尾“看到更多...”

如果字符串没有换行,一切都会顺利进行。


  

“猫吃掉了蛋糕,走了出去,没有任何东西   问题。然后第二天发生了一件非常糟糕的事情。主人把猫踢了出去,那只小动物没有机会回去。”

成为

  

“猫吃掉了蛋糕,走了出去,没有任何东西   问题。然后查看更多...


但是除此之外,我也想限制高度。这样,字符串的最大高度就可以达到200pt,如下所示:

  

2行新内容

     

>

     

1条新线

     

3条新线

     

>

     

>

     

0个新行

应该成为

  

2行新内容

     

>

     

1条新线

     

查看更多...


如何确定应该在哪个字符后加上“查看更多...”文本?

代码:

func shorten(maxWidth : CGFloat) -> NSMutableAttributedString {


        let font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
        // If height is more than 200pt
        if self.height(withConstrainedWidth: maxWidth, font: font) > 200 {
            // Here.. how?
           return finalString
        }

        // If char is more than 400
        if self.count > 400 {
            // BLA BLA CUT TEXT
            return finalString
        }

        let finalString = NSMutableAttributedString(string: self, attributes: [NSAttributedString.Key.font : font])

        return finalString
    }

1 个答案:

答案 0 :(得分:1)

我强烈建议您不要在文本中放入see more...作为纯字符串。

更好的方法是在标记后立即使用UIButton文本see more...

在这种情况下,您可以轻松地控制其位置,表单,UI等