2016-11-30 13 views
1

html 텍스트를 표시하기 위해 ASTextNode (AsyncDisplayKit의 UILabel과 동일)를 표시하려고합니다. 라벨의 속성 텍스트를 설정하기 만하면됩니다.NSAttributedString HTML 링크 변경 색상

extension String { 
    var html2AttributedString: NSAttributedString? { 
     guard let data = data(using: .utf8) else { return nil } 
     do { 
      return try NSAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil) 
     } catch let error as NSError { 
      print(error.localizedDescription) 
      return nil 
     } 
    } 
    var html2String: String { 
     return html2AttributedString?.string ?? "" 
    } 
} 

그런 다음 내가 설정 한 내 라벨 세부 정보 : : 그래서

self.displayContent = NSMutableAttributedString(attributedString: content.html2AttributedString!) 
self.displayContent?.addAttribute(NSFontAttributeName, value: UIFont.fontMainFeedContentFont(), range: NSRange.init(location: 0, length: self.displayContent!.length)) 

나는 NSAttributedString은에 HTML 텍스트를 변환이 확장을 사용하여

:

내가 내 문자열을 작동하는 방법이있다 내 글꼴로 내 레이블이 있고 괜찮아요, 문제는 내가 내 레이블의 링크 색을 변경할 수 없다는 것입니다, 그것은 내가 원하는 파란색 시스템입니다.

어떻게하면 링크의 색상을 변경할 수 있습니까?

감사합니다.

+0

, 당신을 밑줄 색을 의미합니까? – KrishnaCA

+0

아니, 텍스트 색상이 검은 색, 링크 색상이 파란색입니다 – user2206906

답변

0

링크 색상은 다음과 같이 변경할 수 있습니다. 아래의 예는 것을 보여줄 것입니다 :

let attributedText:NSMutableAttributedString = NSMutableAttributedString(string: "why?") 
attributedText.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle, range: NSMakeRange(0, attributedText.length)) 
attributedText.addAttribute(NSUnderlineColorAttributeName, value: UIColor.black, range: NSMakeRange(0, attributedText.length)) 
attributedText.addAttribute(NSForegroundColorAttributeName, value: UIColor.black, range: NSMakeRange(0, attributedText.length)) 

는 또한, 당신이 그것을 표시 년대 UITextView을 다음과 같이 변경해야합니다. 이 작업을 수행 할 UITextView을 사용하지 않으려면

textView.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.black] 

, 당신은 단순히 TTTAttributedLabel를 사용할 수 있습니다. UITextView을 사용하지 않고 원하는 동작을 수행하는 데 사용할 수있는 linkAttributesactiveLinkAttributes 속성이 있습니다.

작동하는지 여부를 알려주세요. 이 수정 작업을 위해 제안 사항을 자유롭게 제안하십시오.

+0

그것은 내가 사용하는 textview 아니에요, 내가 tableview에있어, 난 높이를 계산하고 싶지 않아, 난 고마워 시도해 줄께 – user2206906

+0

NSUnderlineStyleAttributeName 단순히 밑줄 링크, 나는 링크의 텍스트 색상을 변경하고 싶습니다. – user2206906

+0

'attributedText.addAttribute (NSForegroundColorAttributeName, value : UIColor.black, 범위 : NSMakeRange (0, attributedText.length))'를 사용하여 이미 시도한 것 같습니다. 그것은 나를 위해 작동하지 않았다. 'UITextView'만이'linkTextAttributes' 속성을 가지고 있으며, coretext를 사용하지 않는 유일한 방법입니다. – KrishnaCA

0

여러분,이 작업을 수행하는 데는 추한 방법이 있습니다.

는 NSMutableAttributedString에 HTML 텍스트를 변환 한 후, 나는 단순히 루프는 내가 "NSLink"속성을 볼 때 내가 단순히 속성의 범위에 대한 속성을 추가, 모든 속성을 생각 : 링크 색상으로

self.myString!.enumerateAttributes(in: NSRange(0..<myString!.length), options: []) { (attributes, range, _) -> Void in 
       for (attribute, object) in attributes { 
        if attribute == "NSLink" { 
         print("Attribute = \(attribute) -- \(object)") 
         self.myString?.addAttribute(NSForegroundColorAttributeName, value: StyleKit.color_blue_bright, range: range) 
         self.myString?.addAttribute(NSUnderlineColorAttributeName, value: UIColor.clear, range: range) 
        } 
       } 
      }