Как изменить цвет NSAttributedStringKey.link Swift4 - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь изменить цвет атрибута ссылки uitextview.Но я не могу добиться успеха.Пожалуйста, помогите мне вот мой код.

У меня есть одна строка, имя которой является основной строкой. В этой строке у меня есть строка хэштега. Я нахожу значение хэштега и конвертирую его по интерактивной ссылке.Проблема в том, что я хочу изменить цвет текста этого хэштега на красный.

  txt_text.delegate = self
            let main_string:String = "test this text in #nishant #waooo good to #UUUUUU"
            // print("---->",main_string)
            let attributedString = NSMutableAttributedString(string:main_string)

            let font = UIFont(name: "verdana", size: 13.0)

            attributedString.addAttribute(NSAttributedStringKey.font, value:font!, range: NSRange.init(location: 0, length: main_string.utf16.count))
            let regex = try? NSRegularExpression(pattern: "#(\\w+)", options: [])
            // print(regex)
            let matches = regex?.matches(in: main_string, options: [], range: NSRange(location: 0, length: main_string.utf16.count))



            for match: NSTextCheckingResult in matches! {
                let wordRange: NSRange = match.range(at: 0)

    //                            let linkAttributes = [
    //                                NSAttributedStringKey.link: URL(string: "https://www.apple.com")!,
    //                                NSAttributedStringKey.font: UIFont(name: "Helvetica", size: 18.0)!,
    //                                NSAttributedStringKey.foregroundColor.rawValue: UIColor.red
    //                                ] as! [String : Any]

                let tet  = main_string.rangeFromNSRange(nsRange: wordRange)
                let HasTagText = main_string[tet!]
               // print("-----",HasTagText)

              //  attributedString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red , range: wordRange)
                attributedString.addAttribute(NSAttributedStringKey.link, value: URL(string: String(HasTagText))! , range: wordRange)
                attributedString.addAttribute(NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue), value: UIColor.red , range: wordRange)

               // attributedString.addAttributes(linkAttributes, range: wordRange)

            }


            self.txt_text.attributedText = attributedString





extension String {

    func nsRange(from range: Range<String.Index>) -> NSRange? {
        let utf16view = self.utf16
        if let from = range.lowerBound.samePosition(in: utf16view), let to = range.upperBound.samePosition(in: utf16view) {
            return NSMakeRange(utf16view.distance(from: utf16view.startIndex, to: from), utf16view.distance(from: from, to: to))
        }
        return nil
    }


    func rangeFromNSRange(nsRange : NSRange) -> Range<String.Index>? {
        return Range(nsRange, in: self)
    }

}

Пожалуйста, дайте мне решение

1 Ответ

0 голосов
/ 18 января 2019

Изменение цвета оттенка текста.

let textvw = UITextView()
textvw.tintColor = .blue
...