我在自定义键盘扩展程序中使用iOS系统字体(旧金山适用于iOS 9+)。
我注意到系统键盘中显示的字体重量比UIFontWeightRegular
轻,但它也比UIFontWeightLight
更大。
如何在我自己的键盘上使用与股票键盘相同的重量来实现字体?
答案 0 :(得分:0)
systemFontOfSize:weight:
API允许您将任意权重指定为CGFloat
,iOS将返回最合适的字体。
例如,您可以UIFont.systemFontOfSize(17, weight: UIFontWeightRegular)
代替UIFont.systemFontOfSize(17, weight: 0)
。使用weight
值进行播放,以确定是否可以获得符合要求的字体。
另一种选择可能是尝试使用HTML&带有属性字符串的CSS。使用font-weight
,您可以指定介于100和900之间的值,其中400等于普通字体粗细。
var htmlString = "<p>A</p>"
htmlString += "<style>p{font-family:'-apple-system'; font-size:17px; font-weight:300}</style>"
let htmlData = htmlString.dataUsingEncoding(NSUnicodeStringEncoding)!
let attributedString = try! NSAttributedString(data: htmlData, options: [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
], documentAttributes: nil)
self.aLabel.attributedText = attributedString
更新:尝试这一点,两种解决方案都不允许更好地控制字体粗细。两者都将使用最接近给定重量的字体呈现文本 - 常规或轻型,但两者之间没有任何内容。如果要为细字体添加较粗的笔划,则可能需要使用自定义文本绘图。您可以通过NSAttributedString
's drawing API调查绘图。您可以通过NSStrokeWidthAttributeName
应用自定义笔触宽度。我自己没试过,但这是一个值得研究的想法。