Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

RTF dosyasını Swift içerisinde TextView'de göstermek

0 oy
40 kez görüntülendi
25, Mayıs, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
25, Mayıs, 2015 burhanaksendir tarafından düzenlendi
RTF dosyamı aşağıdaki şekilde TextView'e set ettim:

https://gist.github.com/anonymous/e506d57f2d6531c9ee92

Yalnız şöyle bir sorunum var:
Textview'in font boyutunu bir slider ile değiştirmek isteyince RTF dosyamdaki bütün html taglar (bold, eğik gibi) kayboluyor.  Bu sorunu nasıl aşabilirim ?

1 cevap

+1 oy
26, Mayıs, 2015 yasin tarafından cevaplandı
26, Mayıs, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

direkt font size'ını değiştirirseniz gider tabi.
attributedString özelliklerini muhafaza ederek font size'ı değiştirmeniz gerek.

attributedString düzenlemelerini nasıl yapacağınıza ait bir çok kaynak var nette,
developer dokümantasyonuda şurada,
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/AttributedStrings/Tasks/ChangingAttrStrings.html

26, Mayıs, 2015 burhanaksendir tarafından yorumlandı
Araştırmalarım neticesinde istediğim etkiyi elde edebilmek için bulduğum örnekler oldu. Ama hepsi Obj-C üzerineydi. Bu aşağıdaki örnek kod bloğunu Swift'e nasıl çevirebilirim ?

Örnek şurada:
https://gist.github.com/anonymous/cf1107f03ee33a60c957
26, Mayıs, 2015 yasin tarafından yorumlandı
objective-c'de block based bir operasyonda block içerisinde düzenlenmesini istediğimiz dış değişkenimiz için __block ifadesini kullanmak zorundaydık.
Swift'de artık bunu kullanmanıza gerek  yok.


şöyle bir şey olması lazım verdiğiniz objective-c örneğinin swift karşılığı;


var newSizeFactor:CGFloat = 5 // font size multiplier for desired new font size
        
        var res:NSMutableAttributedString = NSMutableAttributedString(string: "myString")
        res.beginEditing()
        var found = false
        res.enumerateAttribute(NSFontAttributeName, inRange: NSMakeRange(0, res.length), options: NSAttributedStringEnumerationOptions.allZeros) { (data, range, stop) -> Void in
            if let oldFont = data as? UIFont {
                let newFont = oldFont.fontWithSize(oldFont.pointSize * newSizeFactor)
                res.removeAttribute(NSFontAttributeName, range: range)
                res.addAttribute(NSFontAttributeName, value: newFont, range: range)
                found = true
            }
        }
        if !found {
            //nothing found
        }
        res.endEditing()
26, Mayıs, 2015 burhanaksendir tarafından yorumlandı
Çok teşekkür ederim.
...