Swift:string - 计算高度的第一个字符位置?

问题描述 投票:0回答:1

我想缩短长串,结尾是“看到更多......”。

如果字符串没有新行,一切顺利。


“猫吃了蛋糕,走出屋外,没有任何问题。第二天发生了一件非常糟糕的事情。主人将猫踢出去,小动物没有机会回去。”

“猫吃了蛋糕,走出屋外,没有任何问题。然后看到更多......”


但除此之外,我还想限制身高。这样字符串的高度最大可达200​​pt,如下所示:

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
    }
swift string label
1个回答
1
投票

我强烈建议你不要将see more...作为普通字符串放入文本中。

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

在这种情况下,您可以轻松地操纵它的位置,形式,UI等

© www.soinside.com 2019 - 2024. All rights reserved.