【发布时间】:2015-11-14 14:21:09
【问题描述】:
我正在尝试在 iOS 上的 UIWebView 中使用与 iOS 系统当前使用的完全相同的字体。
这意味着我想使用与我得到的完全相同的字体:
UIFontDescriptor *fd;
fd = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
UIFont *font = [UIFont fontWithDescriptor:fd size:0];
有很多关于 SO(iPhone Development - Setting UIWebView font、Using custom font in a UIWebView、How to change UIWebView default font、How to set custom font in UIWebView?)的答案解释了如何通过这样做将 UIFont 的 familyName 或 fontName 嵌入到 html 的样式属性中:
NSString *fontStyle, *htmlString = @"test";
fontStyle = [NSString stringWithFormat:@"font-family:%@;font-size:%d", font.familyName, (int)font.pointSize];
htmlString = NSString stringWithFormat:@"<span style=\"%@\">%@</span>", fontStyle, htmlString];
但这似乎不再适用于 iOS 7 和 8,这些系统字体名称现在如下:
font.fontName: .HelveticaNeueInterface-Regular
font.familyName: .Helvetica Neue Interface
在带有“font-family”属性的 UIWebView 中使用这些名称时,文本会以默认字体(带有衬线,当然不是新的 iOS 系统字体)呈现。删除前导句点也无济于事。
那么,我现在如何将系统字体转换为 Web Kit 可以正确解释的名称?
请理解我正在寻找一个通用的解决方案,而不是简单地寻找我可以手动插入到 html 样式属性中的 iOS 7/8 名称。
【问题讨论】:
标签: ios ios7 fonts ios8 uiwebview