如何在 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
我在 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