如何在 NSMutableAttributedString 中传递两个字符串

How to pass two string in NSMutableAttributedString

我在 xib 文件上有两个 UILabel,我正在使用 plist 文件来编辑它的文本。

我想增加两个 UILabels "title" 和 "details" 的行距。

为了增加行间距,我实现了NSMutableAttributedString。但是我不知道如何将两个字符串合二为一 class.

有解决问题的方法吗?

class PlaySheetCellLeft: UITableViewCell {

    @IBOutlet var LBLTitle:UILabel!
    @IBOutlet var LBLDetail:UILabel!

    var message:[String:Any]? {
        didSet{
            guard let msg = self.message else { return  }
            let title = msg["title"] as! String
            self.LBLTitle.text = title
            let details = msg["detail"] as! String
            self.LBLDetail.text = details

            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.lineSpacing = 10

            //error code
            let attrString = NSMutableAttributedString(string: title, string: details)

            attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
            LBLTitle.attributedText = attrString

        }
   }

我相信您正在尝试从两个不同的字符串创建一个 NSMutableAttributedString。但是您应该做的是创建两个单独的 NSMutableAttributedString 实例 - 一个用于标题,一个用于详细信息。

简单易行

如果您对标题和详细信息使用不同的标签,则

// For title 
let attrTitleString = NSMutableAttributedString(string: title)
attrTitleString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrTitleString.length))
LBLTitle.attributedText = attrString

// For detail 
let attrDetailsString = NSMutableAttributedString(string: details)
attrDetailsString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrDetailsString.length))
LBLDetail.attributedText = attrDetailsString

对于单个标签

let labelString = "\(title)\n\(details)"
let attrString = NSMutableAttributedString(string: labelString)

// Set common attribute for both title & detail (according to your code)
attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))

// You can also set differnt attribute for title & details
attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(<... set range for title...>))

attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(<...Set range for details....>))

<you label instance - LBLTitle or LBLDetail>.attributedText = attrString