UIFont
提供+preferredFontForTextStyle:
方法,根据用户选择的内容大小类别和给定的{{3}获取大小合适的字体实例 }}
我想要的是获取给定文字样式和内容大小的字体。类似于+fontForContentSizeCategory:andTextStyle:
。
很遗憾,我找不到与UIFontTextStyle
或UIFont
标题类似的内容。
关于如何实现这一目标的任何想法?
由于
答案 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)