İçeriğe geç

NSAttributedString kullanımı

Merhabalar bu yazımda text düzenleme işlemleri için kullanmamız gereken NSAttributedString sınıfını nasıl kullanacağınızı göstereceğim.

iOS içerisinde aktif olarak kullandığımız UILabel ve UITextView kullanırken text içerisinde farklı görsel işlemler yapmak isteyebiliriz. Örneğin Yazının paragrafının baş harfini farklı font veya renkte olmasını kullandığımız nesneye attributedText ekleyerek sağlayabiliriz. iOS’da bize bu işlemleri yapmamızı sağlayan NSAttributedString sınıfını sunmuştur.

Değiştirilmeyen sabit attribute yazmak için NSAttributedString, değiştirilebilir daha sonra silinebilir attribute yazmak için ise NSMutableAttributedString sınıfını kullanacağız.

let strShadow = NSShadow()
strShadow.shadowOffset = CGSize(width: 2, height: 3)
strShadow.shadowColor = UIColor.black
strShadow.shadowBlurRadius = 3.0

let attr: [NSAttributedStringKey: Any] = [.foregroundColor: UIColor.red,
                                                  .shadow: strShadow]
let attrStr = NSAttributedString(string: label.text!, attributes: attr)
label.attributedText = attrStr

Yukardaki örnekteki gibi gölge,renk,alt çizgi vs ekleme yapmak oldukça kolay.

 let text = label.text!
        let attr = NSMutableAttributedString(string: text)
        attr.addAttributes([.foregroundColor: UIColor.red], range: NSRange(location: 0, length: 3))
        attr.addAttributes([.font: UIFont.boldSystemFont(ofSize: 25)], range: NSRange(location: 1, length: 1))
        label.attributedText = attr

NSMutableAttributedString kullanarakta daha sonradan herhangi bir özellik ekleyebilir veya .removeAttribute ile özellik silebilirsiniz.

let attrStrLink = NSMutableAttributedString(string: "İOS & Swift ve yazılım dünyasından içerikler barındıran bir blog.")
        attrStrLink.addAttribute(.link, value: "https://www.kenanatmaca.com", range: NSRange(location: 0, length: 11))
        label.attributedText = attrStrLink

.link özelliği sayesinde text üzerinde belirlediğiniz range aralığını link ekleyebilirsiniz ve kullanıcının tap işlemi ile yönlendirme yapabilirsiniz. Bu yönlendirme işleminide UITextView’e bağlı gerekli delegate fonksiyonu üzerinden gerçekleştiriyoruz.

 func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
        UIApplication.shared.open(URL, options: [:])
        return false
    }

 

 

Tarih:iOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca