adjustsFontForContentSizeCategory 是不是适用于自定义字体?

Posted

技术标签:

【中文标题】adjustsFontForContentSizeCategory 是不是适用于自定义字体?【英文标题】:Does adjustsFontForContentSizeCategory work for custom fonts?adjustsFontForContentSizeCategory 是否适用于自定义字体? 【发布时间】:2017-03-09 09:55:57 【问题描述】:

ios 10 在UILabel 和其他adjustsFontForContentSizeCategory 上引入了一个新属性。设置后,它会自动调整标签的字体大小以尊重用户的Dynamic Type 设置。

文档是,啊,sparse。可以使此属性与自定义字体一起使用吗?

【问题讨论】:

【参考方案1】:

此属性适用于自定义字体。

但是,对于自定义字体,系统只会调整字体的大小,而不是粗细/样式。它不知道您家庭中可用的不同自定义字体以及它们的名称。为了支持这一点,您需要一种稍微手动的方法:

UIFontDescriptor *userFont = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
float userFontSize = [userFont pointSize];
UIFont *font = [UIFont fontWithName:@"MyFont-Style" size:userFontSize];

并将该字体应用于您的标签。如果您有特定的尺寸/重量组合可用于不同的风格,您还需要使用这种手动方式......系统不是通灵的?

【讨论】:

例如,我如何告诉 iOS xxLarge 大小的“标题”应该是 MyCustomFont-SemiBold,24pt,如果这确实是我的设计师所要求的? 我什至不明白这是如何工作的。您设置了自定义字体和大小,并勾选“自动调整字体”(今天 Xcode 8.3b4 中的新功能),然后呢?它假定您给出的尺寸是“正常”的,并从那里上下调整一个百分比?

以上是关于adjustsFontForContentSizeCategory 是不是适用于自定义字体?的主要内容,如果未能解决你的问题,请参考以下文章