测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2015年10月 |
SPM支持 SPM | ✗ |
由David Keegan维护。
注册自定义字体的辅助类,用于 UIFontTextStyle
。
iOS 7
引入了动态字体的概念,以提升可访问性和可读性。该库使实现这些功能变得容易,以帮助使您的应用更具可访问性和可读性。
该库还可以通过根据 iOS 7
中引入的文本样式设置一组严格的字体,来帮助保持您应用中的字体一致性。
还提供了一些 UILabel
和 UIButton
的子类,与这些文本样式和 KGNPreferredFontManager
一起工作,可以自动更新和调整大小,以匹配用户的文本大小和可访问性设置。建议与 KGNAutoLayout 一起使用此库,以确保在字体大小改变时,元素可以相应地调整大小和位置。
创建一个 PreferredFontManager
以指定当用户更改其可访问性设置时使用的字体大小。
以下代码为每个标准文本样式注册了 fontWeight
和 baseFontSize
。这个基础字体大小用于 UIContentSizeCategoryLarge
字体大小,然后递增和递减 increment
和 decrement
属性传递的数值。
还有一个额外的属性定义了递增操作是否扩展到额外的可访问性大小类别。默认情况下,该 includeAccessibilitySizes
参数为 false
,但通常非常有用,以确保正文文本非常大,如 Messages.app
中所示。
此方法有两个版本。一个接受 fontWeight: CGFloat
,这是从 iOS 8.2
开始引入的 UIFontWeight...
常量。另一个接受 fontName: String
,即字体名称,可以是系统字体或自定义字体。
查看提供的示例应用以查看这个功能是如何实现的。
let preferredFontManager = PreferredFontManager()
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleHeadline, fontWeight: UIFontWeightUltraLight, baseFontSize: UIFont.systemFontSize()*4, increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleSubheadline, fontWeight: UIFontWeightRegular, baseFontSize: UIFont.systemFontSize()*2, increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleBody, fontWeight: UIFontWeightRegular, baseFontSize: UIFont.labelFontSize(), increment: 2, decrement: 1, includeAccessibilitySizes: true)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleCaption1, fontWeight: UIFontWeightMedium, baseFontSize: UIFont.systemFontSize(), increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleCaption2, fontWeight: UIFontWeightRegular, baseFontSize: UIFont.systemFontSize(), increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleFootnote, fontWeight: UIFontWeightRegular, baseFontSize: UIFont.smallSystemFontSize(), increment: 1, decrement: 1)
let preferredFontManager = PreferredFontManager()
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleHeadline, fontName: "AvenirNext-Light", baseFontSize: 28, increment: 2, decrement: 2)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleSubheadline, fontName: "AvenirNext-Regular", baseFontSize: 22, increment: 2, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleBody, fontName: "AvenirNext-Regular", baseFontSize: 17, increment: 1, decrement: 1, includeAccessibilitySizes: true)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleCaption1, fontName: "AvenirNext-Medium", baseFontSize: 15, increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleCaption2, fontName: "AvenirNext-Regular", baseFontSize: 13, increment: 1, decrement: 1)
preferredFontManager.registerFontsForTextStyle(UIFontTextStyleFootnote, fontName: "AvenirNext-Regular", baseFontSize: 11, increment: 1, decrement: 1)
首选字体按钮
和 首选字体标签
分别是 UIButton
和 UILabel
的子类,但它们包含一个 PreferredFontManager
并订阅 UIContentSizeCategoryDidChangeNotification
以自动更新用户选择的辅助功能字体大小所使用的字体。
let label = PreferredFontLabel()
let button = PreferredFontButton()
默认使用 UIFontTextStyleBody
,但这可以自定义并在任何时间通过 textStyle:
构造函数或 .textStyle
属性来更改。
let label = PreferredFontLabel(textStyle: UIFontTextStyleHeadline)
let button = PreferredFontButton(textStyle: UIFontTextStyleHeadline)
默认使用 UIFont.preferredFontForTextStyle
来确定要使用的字体,但可以通过设置 preferredFontManager
属性来自定义。建议有一个 PreferredFontManager
的实例,并用于所有标签、按钮和其他文本项。
let label = PreferredFontLabel()
label.preferredFontManager = App.PreferredFontManager
let button = PreferredFontButton()
button.preferredFontManager = App.PreferredFontManager