2017-03-19 4 views
3

UILabel은 xib 파일에 두 개가 있는데 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

당신의 제목과 세부 사항을 표시하지 마십시오 타이틀을 하나의 레이블 다음

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

& 세부 사항을 모두 다른 레이블을 사용하는 경우 그것은 간단하고

쉽게 두 개의 다른 라벨? –

+0

네, 그게 내가 원하는 방법! – risa8

답변

0

당신이

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 인스턴스를 생성하는 것입니다. 하나는 제목 용이고 다른 하나는 세부 사항 용입니다.