簡體   English   中英

更改NSAttributedString中的字體大小而不會丟失Html樣式 - Swift

[英]Changing font size in NSAttributedString without losing Html style - Swift

我在uiTextView中添加了一個html格式化的字符串。 一切正常,直到我嘗試增加或減少字體大小。 當我按下增加或減少按鈕時整個html樣式,字體丟失。 如何在不丟失html樣式和字體的情況下增加或減少字體?

在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

import UIKit

extension UILabel {
 func increaseFontSize (txt: String) {
    //        self.font.fontWithSize(self.font.pointSize+1)
    self.font =  UIFont(name: self.font.fontName, size:        self.font.pointSize+1)!
    //self.font.fontWithSize(self.font.pointSize-1)

    var attrStr = NSAttributedString(
        data: txt.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
        options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
        documentAttributes: nil,
        error: nil)

    self.attributedText = attrStr

    self.sizeToFit()
}
func decreaseFontSize (txt: String) {
    //        self.selectable = true
    self.font =  UIFont(name: self.font.fontName, size: self.font.pointSize-1)!
    //self.font.fontWithSize(self.font.pointSize-1)

    var attrStr = NSAttributedString(
        data: txt.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
        options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
        documentAttributes: nil,
        error: nil)
    self.attributedText = attrStr

    self.sizeToFit()
    //        self.selectable = false
   }

}

class ViewController2:UIViewController {

   @IBOutlet weak var label: UILabel!


@IBAction func decr(sender: AnyObject) {
    label.decreaseFontSize(text)

}

@IBAction func inc(sender: AnyObject) {
    label.increaseFontSize(text)
}

// Do any additional setup after loading the view, typically from a nib.
var text:String = String("<h1 style=\"text-align:center\"> UNIQUE INTERNATIONAL </h1> Unique International turizm şirketimiz, kongre turizmi ve otel işletmeciliği alanında lider konuma sahiptir. Unique turizm şirketimiz 2010 yılında Yükselir Şirketler Grubu çatısı altında faaliyetlerine başlamıştır. Şirketimiz, Uluslararası Kongre Turizmi, Toplantı Organizasyonları, Lansman, Konser, Tanıtım ve Yatçılık gibi konularda müşterimize ve iş ortaklarımıza, Körfez Ülkeleri ve Arap Emirlikleri başta olmak üzere hizmetlerine devam etmektedir. Her türlü organizasyona göre proje geliştirme, uluslararası sanatçı ve iletişim alanlarında koordinasyonu alışılagelmişin dışında creative çözümlerle en kaliteli hizmeti profesyonelce sağlamak ilkesini benimsemiştir. Aldığı takdir ve ödülleriyle daha da güçlenerek sektöre ivme kazandırmaya devam etmektedir. <br /><br /> Unique, uluslararası ‘Sürdürülebilir Turizm Kalkınması’ kurallarına göre turizmde yer alan ev sahipliği ve turist kesimlerinin ihtiyaçlarını ve bugün var olan kaynaklarının gelecekte değerlerinin artırılarak ve korunarak karşılanmasını ilke edinmiştir. (WTO-Dünya Turizm Birliği, 1998) Daha genel bir tanımla, sürdürülebilir turizm, insanın etkileşimde bulunduğu yada bulunmadığı çevrenin bozulmadan veya değiştirilmeden korunarak, kültürel bütünlüğün, ekolojik süreçlerin, biyolojik çeşitliliğin ve yaşamı sürdüren sistemlerin sürdürüldüğü ve aynı zamanda tüm kaynakların ziyaret edilen bölgedeki insanların ve turistlerin ekonomik, sosyal ve estetik ihtiyaçlarını doyuracak şekilde ve gelecek nesillerin de aynı ihtiyaçlarını karşılayabilecekleri biçimde yönetildiği bir kalkınma şeklidir; Unique Uluslararası Turizm şirketimiz, organizasyonlar düzenlediği her ülke, şehir, tarihi bölgeler ve ülkelerin kalsınmasında yatırımları ve kaynaklarıyla önemli ölçüde kalkınmaya destek olmaya ve faaliyetlerine yeni yatırımlarına devam etmektedir. </br></br></br></br> ")

override func viewDidLoad() {
    super.viewDidLoad()



    var attrStr = NSAttributedString(
        data: text.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
        options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
        documentAttributes: nil,
        error: nil)
    label.attributedText = attrStr
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}   

}

我不知道為什么代碼中的函數increaseFontSize和decreaseFontSize需要參數txt。 換句話說,我認為我並不完全明白你想要實現的目標。

以下是一些供您參考的代碼。 它是從我為UITextView擴展創建的函數中修改的。 我認為它也適用於UILabel。 我自己沒有測試過。 主要思想是在保留其他屬性的同時更改字體大小。

func increaseFontSizeBy(pointSize: CGFloat) {
    let fullRange = NSRange(location: 0, length: count(text))
    var mutableAttributeText = NSMutableAttributedString(attributedString: attributedText)
    mutableAttributeText.enumerateAttribute(NSFontAttributeName, inRange: fullRange, options: NSAttributedStringEnumerationOptions.LongestEffectiveRangeNotRequired) {
        (attribute: AnyObject!, range: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
        if let attributeFont = attribute as? UIFont {
            let newPointSize = attributeFont.pointSize + pointSize
            let scaledFont = UIFont(descriptor: attributeFont.fontDescriptor(), size: newPointSize)
            mutableAttributeText.addAttribute(NSFontAttributeName, value: scaledFont, range: range)
        }
    }
    attributedText = mutableAttributeText
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM