在旧金山使用fontWithSize API

时间:2015-09-06 17:33:13

标签: ios fonts ios9 uifont uifontdescriptor

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 - 它是否会产生新尺寸的优化字体?

1 个答案:

答案 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