iOS UILabel多行

在iOS开发中,UILabel是一个常用的界面元素,用于显示文字内容。默认情况下,UILabel只能显示单行文字,如果文字内容过长,会自动截断显示。但是在某些场景下,我们需要显示多行文字,这时就需要对UILabel进行设置来实现多行显示的效果。

单行UILabel

首先,我们来看一下如何创建一个单行UILabel。

let label = UILabel(frame: CGRect(x: 20, y: 100, width: 200, height: 30))
label.text = "Hello, World!"
self.view.addSubview(label)

上面的代码创建了一个UILabel实例,并设置其文字内容为"Hello, World!"。然后将UILabel添加到视图中显示出来。

多行UILabel

要实现多行UILabel,我们需要设置UILabel的numberOfLines属性为0,并使用lineBreakMode属性来设置文本过长时的换行方式。同时,我们还需要设置UILabel的preferredMaxLayoutWidth属性来限制UILabel的最大宽度,以防止文本过长时超出界面。

let label = UILabel(frame: CGRect(x: 20, y: 100, width: 200, height: 0))
label.text = "这是一段很长很长的文字,需要换行显示。这是一段很长很长的文字,需要换行显示。这是一段很长很长的文字,需要换行显示。"
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.preferredMaxLayoutWidth = 200
label.sizeToFit()
self.view.addSubview(label)

上面的代码中,我们首先将UILabel的高度设置为0,这样UILabel的高度会根据内容自动调整。然后设置numberOfLines属性为0,表示允许多行显示。lineBreakMode属性设置为.byWordWrapping表示按照单词进行换行。preferredMaxLayoutWidth属性设置为200,限制UILabel的最大宽度为200。最后调用sizeToFit()方法,使UILabel根据内容自动调整大小。

NSAttributedString

在某些情况下,我们可能需要对UILabel的文字进行富文本处理,比如设置文字颜色、字体等。这时可以使用NSAttributedString来实现。

let label = UILabel(frame: CGRect(x: 20, y: 100, width: 200, height: 0))
let attributedString = NSMutableAttributedString(string: "这是一段带有富文本的文字")
attributedString.addAttribute(.foregroundColor, value: UIColor.red, range: NSRange(location: 2, length: 2))
attributedString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 20), range: NSRange(location: 5, length: 4))
label.attributedText = attributedString
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.preferredMaxLayoutWidth = 200
label.sizeToFit()
self.view.addSubview(label)

上面的代码中,我们先创建了一个NSMutableAttributedString对象,并设置其文字内容为"这是一段带有富文本的文字"。然后使用addAttribute(_:value:range:)方法分别为文字的一部分设置了颜色和字体。最后将NSAttributedString对象赋值给UILabel的attributedText属性。

总结

通过设置UILabel的numberOfLines属性为0,并使用lineBreakMode属性设置换行方式,再配合preferredMaxLayoutWidth属性限制最大宽度,我们可以实现多行UILabel的效果。同时,使用NSAttributedString可以对UILabel的文字进行富文本处理。

以上就是关于iOS UILabel多行的介绍,希望对你有所帮助!

journey
    title iOS UILabel多行

    section 单行UILabel
        code 使用UILabel显示单行文字

    section 多行UILabel
        code 使用UILabel显示多行文字

    section NSAttributedString
        code 使用NSAttributedString对UILabel的文字进行富文本处理

    section 总结
        code UILabel多行的使用总结
flowchart TD
    开始 --> 单行UILabel
    开始 --> 多行UILabel
    开始 --> NSAttributedString
    多行UILabel --> 总结
    NSAttributedString --> 总结
    单行UILabel --> 总结

文章中所示代码可参考如下:

let label = UILabel(frame: CGRect(x: 20, y: 100, width: 200, height: 30))