簡體   English   中英

iOS Swift相對字體大小

[英]iOS Swift Relative font size

我有一個UITextView,我想改變它的字體大小。 但是,我希望它相對更改,因為它從具有多個字體大小的文件中提取並且我希望它相應地更改。 例如,我有一個字體大小為36的字和一個字體大小為12的字,我想將它們分別縮放0.75%到27和9。

如果我嘗試:

textview.font = UIFont(name: textview.font.fontName, size: 20)

它只會改變整個UITextView字體大小。

謝謝!

您可以使用此擴展程序:

extension NSAttributedString {
  @warn_unused_result
  func scaleBy(scale: CGFloat) -> NSAttributedString {
    let scaledAttributedString = NSMutableAttributedString(attributedString: self)
    scaledAttributedString.enumerateAttribute(NSFontAttributeName, inRange: NSRange(location: 0, length: scaledAttributedString.length), options: NSAttributedStringEnumerationOptions(rawValue: 0)) { (value, range, _) in
        if let oldFont = value as? UIFont {
            let newFont = oldFont.fontWithSize(oldFont.pointSize * scale)
            scaledAttributedString.removeAttribute(NSFontAttributeName, range: range)
            scaledAttributedString.addAttribute(NSFontAttributeName, value: newFont, range: range)
        }
    }
    return scaledAttributedString
  }
}

然后打電話給:

textField.attributedText = textField.attributedText!.scaleBy(0.5)

例:

在操場上的例子

您必須為富文本格式文件編寫(或查找)解析器,該文件可以提取每個文本元素的字體大小數據(我認為在大多數情況下這將是\\fsN標記)然后使用該數字(乘以0.75)單獨設置每個單詞或短語的大小。 如果需要將不同大小的單詞重新組合成單​​個字符串,則可以使用屬性字符串,但如果每個單詞或短語都在單獨的標簽中,則不需要。

就個人而言,我會忽略源數據的字體大小,並在應用程序中強加一個看起來不錯的布局,如果這是一個選項。

暫無
暫無

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

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