获取UIFont的内容大小类别

时间:2015-08-16 23:46:58

标签: ios uifont uifontdescriptor

UIFont提供+preferredFontForTextStyle:方法,根据用户选择的内容大小类别和给定的{{3}获取大小合适的字体实例 }}

我想要的是获取给定文字样式内容大小的字体。类似于+fontForContentSizeCategory:andTextStyle:

很遗憾,我找不到与UIFontTextStyleUIFont标题类似的内容。

关于如何实现这一目标的任何想法?

由于

2 个答案:

答案 0 :(得分:4)

不幸的是,dependencies{ compile files('libs/myJarContainingGuava.jar') compile group: 'com.google.guava', name: 'guava', version: '18.0' } +[UIFont preferredFontForTextStyle:]都在内部依赖+[UIFontDescriptor preferredFontDescriptorWithTextStyle:]。他们使用私有函数-[UIApplication preferredContentSizeCategory]来检索具有特定文本样式和大小类别的CoreText字体描述符,并且最终基于存储在某处的配置文件_CTFontDescriptorCreateWithTextStyle的类别→大小映射,但我认为你不想使用私有API。

虽然犹豫不决暗示有可能动态调动CoreTextConfig.plist来欺骗-[UIApplication preferredContentSizeCategory]以返回您想要的大小类的字体描述符,但我无法推荐任何特定方法。您可以检索如下字体描述符:

+[UIFontDescriptor preferredFontDescriptorWithTextStyle:]

但它不会包含尺寸属性,因此您将尝试自己设置类别→尺寸映射。

答案 1 :(得分:1)

从iOS 10.0开始,这可以使用UITraitCollection

let traitCollection = UITraitCollection(preferredContentSizeCategory: contentSizeCategory)
let font = UIFont.preferredFont(forTextStyle: textStyle, compatibleWith: traitCollection)