2017-03-19 29 views
3

我有两个UILabel在厦门国际银行文件,我使用的plist文件来编辑它的文本。如何传递两个字符串中NSMutableAttributedString

我想增加两个UILabels“标题”和“细节”行间距。

为了增加行距,我实施了NSMutableAttributedString。但我不知道如何在一个类中传递两个字符串。

该问题的任何解决方案?

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 

     } 
    } 
+0

难道你不希望显示标题和细节在它的简单和容易

两个不同的标签? –

+0

是的,这就是我想要的! – risa8

回答

0

,如果你使用不同的标签标题&细节都那么

// 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 
+0

感谢您的回复。随着代码和行距的增加,我可以在设备中看到两个标题和两个细节。任何想法? – risa8

+0

它工作完美!谢谢你的帮助 :) – risa8

0

我相信你试图从两个不同的字符串创建一个NSMutableAttributedString。但是你应该做的是创建两个单独的NSMutableAttributedString实例 - 一个用于标题,另一个用于细节。

相关问题