[英]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.