BNRDynamicTypeManager 0.1.0

BNRDynamicTypeManager 0.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

John Gallagher维护。



  • John Gallagher

BNRDynamicTypeManager 是一组辅助类,它使 iOS 7 应用程序中的 Dynamic Type 更易于使用。最重要的是,它处理监听 UIContentSizeCategoryDidChangeNotification 并自动更新所有“监视”控件的字体。

要运行示例项目,克隆仓库,确保选择 Example 目标,然后运行它。

要运行单元测试,首先从 Tests 目录运行 pod install 命令。

使用 - XIB 文件和 Storyboard

最简单的用例是如果您正在使用 XIB 文件或 Storyboard。将 BNRDynamicTypeManager 拖入项目后,将以下类的任何实例更改为 BNRDynamicTypeManager 提供的适当子类(并确保选择了系统文本样式作为视图的字体)

  • UILabelBNRDynamicTypeManagedLabel
  • UIButtonBNRDynamicTypeManagedButton
  • UITextFieldBNRDynamicTypeManagedTextField
  • UIViewBNRDynamicTypeManagedView

使用 - 编程创建视图

如果您是编程创建视图,请使用上面使用 XIB 文件中的相同类映射,并使用它们头文件中的指定初始化器。初始化器具有与 UIKit 父类相同的参数,并有一个额外的 textStyle: 参数。例如,创建一个管理的 UILabel 和 UITextView

UILabel *label = [[BNRDynamicTypeManagedLabel alloc]
                       initWithFrame:CGRectZero
                           textStyle:UIFontTextStyleBody];
UITextView *textView = [[BNRDynamicTypeManagedTextView alloc]
                             initWithFrame:CGRectZero
                             textContainer:nil
                                 textStyle:UIFontTextStyleFootnote];

使用 - 无 UIKit 子类

如果您想要更明确地控制(例如,如果您已经有一个正在使用的 UIKit 子类,但您仍然希望字体由您管理),则通过告诉它要监视哪些对象来直接使用 BNRDynamicTypeManager。如果该对象是已知的UIKit类之一或它们的子类,请使用提供的方法。例如,对于 UILabel

UILabel *label = /* create a label */;

// Tell BNRDynamicTypeManager to update label.font now and any time the user
// changes their font size.
[[BNRDynamicTypeManager sharedInstance] watchLabel:label
                                         textStyle:UIFontTextStyleBody];

如果您想监视的对象不是已知的 UIKit 类之一,但有一个通过键路径可以访问的 UIFont *font,请使用 watchElement:fontKeypath:textStyle: 代替。例如,如果没有提供 UIButton 的方法

UIButton *button = /* create a button */;

[[BNRDynamicTypeManager sharedInstance] watchElement:button
                                         fontKeypath:@"titleLabel.font"
                                           textStyle:UIFontTextStyleBody];

要求

iOS 7 和 ARC。

作者

John Gallagher, [email protected]

许可证

BNRDynamicTypeManager 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。