UITextView.attributedText,如何设置numberOflines和lineBreakMode?

时间:2017-12-11 03:43:17

标签: ios swift uikit uitextview nsattributedstring

在某些情况下,我必须使用UITextView而不是UILabel(使链接属性可以点击)。 这是我的代码:

    let attributedString = NSMutableAttributedString(string: "TestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest")
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byTruncatingTail
    attributedString.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length))

这是我的textView:

private lazy var titleTextView: UITextView = {
    let view = UITextView(frame: .zero, textContainer: nil)
    view.isEditable = false
    view.textContainerInset = .zero
    view.textContainer.lineFragmentPadding = 0
    view.textContainer.maximumNumberOfLines = 2        // Set numberOflines here!
    view.textAlignment = .left
    view.isScrollEnabled = false
    view.delegate = self

    return view
}()

但是maximumNumberOfLines属性不起作用,它只显示1行,然后是" ..."

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要将lineBreakMode设置为不截断的值。

尝试

paragraphStyle.lineBreakMode = .byWordWrapping

答案 1 :(得分:0)

当我设置linespacing属性时,UITextView.sizeToFit()计算的大小不足以显示超过1行。 但是在UILabel中,调用sizeToFit将计算机适当的高度,以便您显示更多行。