KGNPreferredFontManager 0.2.5

KGNPreferredFontManager 0.2.5

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2015年10月
SPM支持 SPM

David Keegan维护。



  • David Keegan

KGNPreferredFontManager

注册自定义字体的辅助类,用于 UIFontTextStyle

iOS 7 引入了动态字体的概念,以提升可访问性和可读性。该库使实现这些功能变得容易,以帮助使您的应用更具可访问性和可读性。

该库还可以通过根据 iOS 7 中引入的文本样式设置一组严格的字体,来帮助保持您应用中的字体一致性。

还提供了一些 UILabelUIButton 的子类,与这些文本样式和 KGNPreferredFontManager 一起工作,可以自动更新和调整大小,以匹配用户的文本大小和可访问性设置。建议与 KGNAutoLayout 一起使用此库,以确保在字体大小改变时,元素可以相应地调整大小和位置。

Example Gif

安装

示例

PreferredFontManager

创建一个 PreferredFontManager 以指定当用户更改其可访问性设置时使用的字体大小。

以下代码为每个标准文本样式注册了 fontWeightbaseFontSize。这个基础字体大小用于 UIContentSizeCategoryLarge 字体大小,然后递增和递减 incrementdecrement 属性传递的数值。

还有一个额外的属性定义了递增操作是否扩展到额外的可访问性大小类别。默认情况下,该 includeAccessibilitySizes 参数为 false,但通常非常有用,以确保正文文本非常大,如 Messages.app 中所示。

此方法有两个版本。一个接受 fontWeight: CGFloat,这是从 iOS 8.2 开始引入的 UIFontWeight... 常量。另一个接受 fontName: String,即字体名称,可以是系统字体或自定义字体。

fontWeight(iOS 8.2+)

查看提供的示例应用以查看这个功能是如何实现的。

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)

fontName

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)

首选字体按钮 & 首选字体标签

首选字体按钮首选字体标签 分别是 UIButtonUILabel 的子类,但它们包含一个 PreferredFontManager 并订阅 UIContentSizeCategoryDidChangeNotification 以自动更新用户选择的辅助功能字体大小所使用的字体。

let label = PreferredFontLabel()
let button = PreferredFontButton()

属性:textStyle

默认使用 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

进度

  • [X] 测试
  • [X] Travis
  • [X] 徽章
  • [X] Carthage
  • [X] CocoaPods
  • [X] 描述
  • [X] 文档