watchOS 上不存在“.SFUIText-Regular”
".SFUIText-Regular" doesn't exist on watchOS
我正在为 Apple Watch 和 iOS 创建一个应用程序。我有 HTML 数据,我将其转换为 NSAttributedString 以显示在 UITextView 中(在 iOS 上)。我也想发到手表上用标签显示。
文本视图中的一切看起来都正常(例如,正确的背景颜色)。在手表上,它只显示文本(没有任何颜色)和 returns 这个错误:
app-Watch Extension[2994:212335] CoreText: PostScript name ".SFUIText-Regular" does not exist.
这是我的代码:
let mutAttText = NSMutableAttributedString(attributedString: self.textView.attributedText)
let attributedOptions : [String: AnyObject] = [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
]
var data: NSData = NSData()
do {
data = try mutAttText.dataFromRange(NSMakeRange(0, mutAttText.length), documentAttributes: attributedOptions)
} catch {
}
let htmlString = NSString(data: data, encoding: NSUTF8StringEncoding)
print(htmlString)
var attrStr = NSMutableAttributedString()
do {
attrStr = try NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil)
attrStr.enumerateAttribute(NSFontAttributeName, inRange: NSMakeRange(0, attrStr.length), options: NSAttributedStringEnumerationOptions.LongestEffectiveRangeNotRequired, usingBlock: { (attribute: AnyObject?, range: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
if let attributeFont = attribute as? UIFont {
let newPointSize = CGFloat(15)
let scaledFont = UIFont(descriptor: attributeFont.fontDescriptor(), size: newPointSize)
attrStr.addAttribute(NSFontAttributeName, value: scaledFont, range: range)
}
})
self.textView.attributedText = attrStr
self.sendText(attrStr)
}
catch {
print("error creating attributed string")
}
尽管 iOS 和 watchOS 都使用 San Francisco 字体,但字体在不同平台之间确实有所不同:
iOS, tvOS, OS X 使用旧金山 (SF-UI).
watchOS 使用旧金山紧凑型 (SF-Compact)。
您似乎在尝试缩放 iOS 系统字体的 pointSize,但 .SFUIText-Regular
在手表上不存在 OS。
您可能还想使用 systemFontOfSize:
而不是尝试缩放命名字体的磅值,因为根据磅值有不同的(文本和显示)版本。这将允许系统 该磅值。
我正在为 Apple Watch 和 iOS 创建一个应用程序。我有 HTML 数据,我将其转换为 NSAttributedString 以显示在 UITextView 中(在 iOS 上)。我也想发到手表上用标签显示。
文本视图中的一切看起来都正常(例如,正确的背景颜色)。在手表上,它只显示文本(没有任何颜色)和 returns 这个错误:
app-Watch Extension[2994:212335] CoreText: PostScript name ".SFUIText-Regular" does not exist.
这是我的代码:
let mutAttText = NSMutableAttributedString(attributedString: self.textView.attributedText)
let attributedOptions : [String: AnyObject] = [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
]
var data: NSData = NSData()
do {
data = try mutAttText.dataFromRange(NSMakeRange(0, mutAttText.length), documentAttributes: attributedOptions)
} catch {
}
let htmlString = NSString(data: data, encoding: NSUTF8StringEncoding)
print(htmlString)
var attrStr = NSMutableAttributedString()
do {
attrStr = try NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil)
attrStr.enumerateAttribute(NSFontAttributeName, inRange: NSMakeRange(0, attrStr.length), options: NSAttributedStringEnumerationOptions.LongestEffectiveRangeNotRequired, usingBlock: { (attribute: AnyObject?, range: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
if let attributeFont = attribute as? UIFont {
let newPointSize = CGFloat(15)
let scaledFont = UIFont(descriptor: attributeFont.fontDescriptor(), size: newPointSize)
attrStr.addAttribute(NSFontAttributeName, value: scaledFont, range: range)
}
})
self.textView.attributedText = attrStr
self.sendText(attrStr)
}
catch {
print("error creating attributed string")
}
尽管 iOS 和 watchOS 都使用 San Francisco 字体,但字体在不同平台之间确实有所不同:
iOS, tvOS, OS X 使用旧金山 (SF-UI).
watchOS 使用旧金山紧凑型 (SF-Compact)。
您似乎在尝试缩放 iOS 系统字体的 pointSize,但 .SFUIText-Regular
在手表上不存在 OS。
您可能还想使用 systemFontOfSize:
而不是尝试缩放命名字体的磅值,因为根据磅值有不同的(文本和显示)版本。这将允许系统