您可以使用YYLabel的lineBreakMode属性和numberOfLines属性来实现这个需求。首先,您需要将numberOfLines设置为3,以限制只显示三行。然后,使用lineBreakMode属性来设置文字超出三行后的截断方式。在第三行末尾添加一个“全文”按钮,您可以在字符串的第三行末尾插入一个特殊的标记,然后在绘制YYLabel时根据这个标记来判断是否需要绘制“全文”按钮。

下面是一个示例代码,演示如何实现这个需求:

import UIKit
import YYText

class ViewController: UIViewController {
    let label = YYLabel()

    override func viewDidLoad() {
        super.viewDidLoad()

        // 设置label的属性
        label.numberOfLines = 3
        label.lineBreakMode = .byWordWrapping
        label.frame = CGRect(x: 20, y: 100, width: 300, height: 100)
        view.addSubview(label)

        // 要显示的字符串
        let text = "这是一个超过三行的示例文本,超过三行的部分将被截断。全文"

        // 在第三行末尾插入标记
        let attributedText = NSMutableAttributedString(string: text)
        let lineBreakIndex = label.truncatedLineRange().length
        if lineBreakIndex < attributedText.length {
            attributedText.insert(NSAttributedString(string: "  全文"), at: lineBreakIndex)
        }

        // 设置label的attributedText
        label.attributedText = attributedText
    }
}

在上面的示例代码中,我们使用YYLabel来显示文本,并将numberOfLines属性设置为3,lineBreakMode属性设置为.byWordWrapping。然后,我们根据labeltruncatedLineRange方法获取到第三行的截断位置,如果截断位置小于字符串的长度,就在截断位置处插入一个包含“全文”文字的NSAttributedString。最后,将这个NSAttributedString设置为labelattributedText属性。

这样,当文本超过三行时,第三行末尾就会显示一个“全文”按钮。不超过三行时,就不会显示这个按钮。

Swift YYLabel外部传入字符串如何超过三行在第三行的末尾添加一个类似全文按钮不需要点击事件。不超过就不需要添加全文按钮

原文地址: https://www.cveoy.top/t/topic/i5xd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录