İçeriğe geç

UILabel ile NSAttributedString kullanımı

Merhabalar bu yazımda iOS uygulamalarımızda kullandığımız UILabel nesnesine içindeki kelimelere göre farklı, renk veya font atama işlemini çoklu paragraf veya tekli paragraf üzerinde nasıl gerçekleştirebileceğinizi paylaşacağım.

Öncelikle yapmamız gereken UILabel içerisinde ilgili kelimeleri bulmak ve bunların konumunu almak. Daha sonasında bu konum aralığına ilgili attribute ekleyebiliriz.

Aşağıda yazdığım UILabel extension kodunu inceleyebilirsiniz.

extension UILabel {
    func applyAttribute(texts:[String: (UIFont?, UIColor?)]) -> NSAttributedString {
        let attrStr = NSMutableAttributedString(string: self.text!)
        for i in 0..<texts.count {
            let text = texts.map { $0.key }
            let font = texts.map { $0.value.0 ?? UIFont.boldSystemFont(ofSize: 13) }
            let color = texts.map { $0.value.1 ?? .black }
            if let regex = try? NSRegularExpression(pattern: text[i], options: .caseInsensitive) {
                let range = NSRange(location: 0, length: self.text!.utf16.count)
                let wordRange = regex.rangeOfFirstMatch(in: self.text!, options: [], range: range)
                attrStr.addAttributes([.font: font[i], .foregroundColor: color[i]], range: wordRange)
            }
        }
        return attrStr
    }
}

Fonksiyonun kullanımı:

lbl.text = "2020 tüm heyecan ve yenilikleri ile geliyor!"
lbl.attributedText = lbl.applyAttribute(texts: [
           "2020": (UIFont.boldSystemFont(ofSize: 20), .orange),
           "heyecan": (UIFont.boldSystemFont(ofSize: 20), .red),
           "yenilikleri": (UIFont.boldSystemFont(ofSize: 20), .blue)])

 

 

Kategori:iOS

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Copyright © 2022 Kenan Atmaca