如何在末尾使用 Read More/Read Less 创建段落(在标签中)?

How to create the paragraph (in label) with Read More/Read Less at the end?

我想创建段落(在标签中)并在末尾阅读 More/Read Less。我是 iPhone 应用程序开发的初学者。

这是我的代码... 我在 else 条件下遇到错误错误是 "Value of type NSLayoutConstraint" has no member 'font'" at lbl.contant = getheight....

@IBOutlet weak var lbl: NSLayoutConstraint!

@IBOutlet weak var btn: UIButton!        

var isLabelAtMaxHeight = false

@IBAction func ButtonAction(_ sender: Any) {
    if isLabelAtMaxHeight {
        btn.setTitle("Read more", for: .normal)
        isLabelAtMaxHeight = false
        lbl.constant = 70
    }
    else {
        btn.setTitle("Read less", for: .normal)
        isLabelAtMaxHeight = true
        lbl.constant = getHeightOfLabel(text:"Isn't it? How to do? I'm sorry I don't know how to solve this exactly. :( – May Phyu Feb 20 at 11:16 No, i dont mean like that. When you set text to label then U have to find height of label then assign that height to label with setting property number of lines = 0 – Jitendra Modi Feb 20 at 11:31" , width:
            view.bounds.width, font: lbl.font)
    }
}



func getHeightOfLabel(text: String, width: CGFloat, font: UIFont) -> CGFloat
{
    let lbl = UILabel(frame: .zero)
    lbl.frame.size.width = width
    lbl.font = font
    lbl.numberOfLines = 0
    lbl.text = text
    lbl.sizeToFit()
    return lbl.frame.size.height
} 
  • 为段落标签的高度限制创建一个出口。
  • 将 "Read more" 按钮的顶部布局设置为 paragraphLabel。
  • 点击 "Read more" 按钮增加高度约束常数,点击 "Read less" 减少高度约束常数。

    @IBOutlet weak var btn: UIButton!
    @IBOutlet weak var yourParagraphLabel: UILabel!
    @IBOutlet weak var lblHeight: NSLayoutConstraint!
    
    var isLabelAtMaxHeight = false
    
    @IBAction func btnAction(_ sender: Any) {
        if isLabelAtMaxHeight {
        btn.setTitle("Read more", for: .normal)
        isLabelAtMaxHeight = false
        lblHeight.constant = 70
    }
    else {
       btn.setTitle("Read less", for: .normal)
       isLabelAtMaxHeight = true
       lblHeight.constant = getHeightOfLabel(text: yourParagraphText, width: 
       view.bounds.width, font: yourParagraphLabel.font)
    }
    }
    

    获取文本的高度

    func getHeightOfLabel(text: String, width: CGFloat, font: UIFont) -> CGFloat 
    {
       let lbl = UILabel(frame: .zero)
       lbl.frame.size.width = width
       lbl.font = font
       lbl.numberOfLines = 0
       lbl.text = text
       lbl.sizeToFit()
       return lbl.frame.size.height
    }