使用 Swift 3 阅读更多/更少

May*_*hyu 5 expand uitextview uilabel ios swift3

我想在段落末尾添加“阅读更多”。当我点击“阅读更多”文本时,它应该展开并在最后显示“更少”。单击“较少”文本时,文本将折叠。

在此处输入图片说明
我在谷歌找到了很多示例工作。但是,我不太明白,大多数项目都是用Objective-C实现的。我也在youtube上找到了。
我想知道使用Swift 3实现这一点的示例代码。
我可以在不使用任何额外库的情况下实现吗?
请帮我。

Mat*_*att 5

  • 为您的高度限制创建一个出口 messageLabel
  • 将“阅读更多”按钮的顶部布局设置为 messageLabel
  • 点击“阅读更多”按钮增加高度约束常数,点击“阅读更少”减少高度约束常数。

    @IBOutlet weak var btn: UIButton!
    
    @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 = getLabelHeight(text: yourSummaryText, width: view.bounds.width, font: yourSummaryLabel.font)
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

获取文本高度

    func getLabelHeight(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
    }
Run Code Online (Sandbox Code Playgroud)