Как мне заставить NSMutableAttributedString работать для ссылок? - PullRequest
0 голосов
/ 03 октября 2018

Я использую NSMutableAttributedString для форматирования текстовых строк.Работает нормально даже со ссылками.Но по какой-то причине размер шрифта для ссылок не изменится, даже если я указал размер.Моя функция выглядит следующим образом: (В коде есть комментарии, объясняющие все)

func formatfunc2(chapter: String, boldStart: Int, boldLength: Int, italicsStart: Int, italicsLength: Int, link: [String], linkStart: [Int], linkEnd: [Int]) -> NSAttributedString {

    let bold = UIFont.boldSystemFont(ofSize: 17)
    let italics = UIFont.italicSystemFont(ofSize: 17)

    //BELOW IS MY FORMAT FOR THE HYPERLINK
    let hyperlink = UIFont.boldSystemFont(ofSize: 17)

    let attributedString = NSMutableAttributedString.init(string: chapter, attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17)])

    //BELOW ARE FORMAT FOR BOLD AND ITALICS - AND THEY WORK FINE
    attributedString.addAttribute(.font, value: bold, range: NSRange.init(location: boldStart, length: boldLength))
    attributedString.addAttribute(.font, value: italics, range: NSRange.init(location: italicsStart, length: italicsLength))

    //THE LOOP GOES THROUGH ALL LINK ADRESSES AND THEIR POSITIONS
    for i in 0...link.count - 1 {

        //HERE I ADD THE FONT SIZE TO THE SAME POSITION AS THE LINKS, BUT IT DOESN'T WORK 
        attributedString.addAttribute(.font, value: hyperlink, range: NSRange.init(location: linkStart[i], length: linkEnd[i]))

        let url = URL(string: link[i]) as! URL

        //MY THEORY IS THAT THE CODE BELOW OVERRIDES THE PREVIOUS FONT SIZE
        attributedString.setAttributes([.link: url], range: NSMakeRange(linkStart[i], linkEnd[i]))
    }

    return attributedString
}

Таким образом, формат отлично работает для всего остального текста, но не для links.Могу ли я вместо этого добавить размер шрифта в последней части кода?:

attributedString.setAttributes([.link: url], range: NSMakeRange(linkStart[i], linkEnd[i]))
...