如何识别给定字符串所需的动态长度标签的行数?

时间:2018-02-08 11:53:01

标签: ios swift uilabel

我有一个动态宽度和动态字符串的UILabel,我从服务器获取。现在我想将此字符串设置为标签为文本。另外我需要设置要标记的行数。因为我正在获取动态字符串所以我不确定可以在一行中设置多少字符。

我找到了类似的答案,但那些并不是我所需要的准确性。

2 个答案:

答案 0 :(得分:0)

将行数设置为0,这将使其动态化。您还需要使您的UILabel sizeToFit myUiLabel.sizeToFit()

答案 1 :(得分:0)

如果由于某种原因需要行数,可以在UILabel上使用以下扩展名:

extension UILabel {

    func linesNeeded() -> Int {
        self.layoutIfNeeded()
        let myText = self.text! as NSString
        let boundingRectangle = CGSize(width: self.bounds.width, height: CGFloat.greatestFiniteMagnitude)
        let labelSize = myText.boundingRect(with: boundingRectangle,
                                            options: .usesLineFragmentOrigin,
                                            attributes: [NSAttributedStringKey.font: self.font],
                                            context: nil)
        return (labelSize.height / self.font.lineHeight)
    }
}

但是,如果您不需要高度,您只想让标签显示整个文本,您应该设置label.numberOfLines = 0,这将允许标签根据需要增长。