iOS 9中的新旧金山字体通过调整跟踪和在SF显示和SF文本之间动态切换,针对其使用的大小进行了优化。在WWDC会议#804中注意到,开发人员不应使用UIFont
来尝试初始化fontWithName
,例如:
UIFont *originalFont = [UIFont systemFontOfSize:11];
UIFont *newFont = [UIFont fontWithName:originalFont.fontName size:44];
这是因为使用fontWithName
API时系统无法针对新尺寸优化字体。
相反,我们建议从原始字体中获取UIFontDescriptor
并使用新尺寸创建新字体,如下所示:
UIFont *originalFont = [UIFont systemFontOfSize:11];
UIFont *newFont = [UIFont fontWithDescriptor:originalFont.fontDescriptor size:44];
但是,他们没有提及以下是否允许进行优化:
UIFont *originalFont = [UIFont systemFontOfSize:11];
UIFont *newFont = [originalFont fontWithSize:44];
我的问题是,fontWithSize
API的行为是fontWithName
API还是fontWithDescriptor
API - 它是否会产生新尺寸的优化字体?
答案 0 :(得分:4)
我可以确认fontWithSize
确实以新的尺寸创建了优化的字体。
Printing description of originalFont:
<UICTFont: 0x7f8d9ba85340> font-family: ".SFUIText-Regular"; font-weight: normal; font-style: normal; font-size: 11.00pt
Printing description of newFont:
<UICTFont: 0x7f8d9ba7fe70> font-family: ".SFUIDisplay-Regular"; font-weight: normal; font-style: normal; font-size: 44.00pt