iOS 10 - 动态字体Dynamic Type

动态字体是iOS7才被引入到iPhone上的,我们可以在手机的设置-通用-字体大小里面设置手机显示的字体大小,设置后我们可以发现很多系统自带的app界面字体或者布局都有所改变,如果我们的app也想要提供这样一个动态字体的体验,那就可以用iOS7引入的DynamicType来实现。

DynamicType是属于Text Kit下面的一个特性
Text Kit是建立在Core Text框架上的
CoreText.framework是一个庞大而复杂的框架,而Text Kit在继承了Core Text强大功能的同时给开发者提供了比较友好的面向对象的API。

实现过程:
1.注册一个DynamicType的消息通知: __ UIContentSizeCategoryDidChangeNotification__
2.在系统字体大小改变的通知后来更新界面上需要支持DynamicType的UIKit的font

self.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
//这里调用setNeedsLayout做一个需要重新布局的标记,在下一个draw周期(60Hz)自动重绘
[self.view setNeedsLayout];

3.最后在layoutSubview或者viewDidLayoutSubview里面更新textLabel的frame


在iOS 10之后,只需要两行代码便可实现:
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 1. 设置字体大小
    self.demoLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
    // 2. 允许调整
    self.demoLabel.adjustsFontForContentSizeCategory = YES;
    
}

1.搭建UI ,在视图中心放置一个Label ,设置居中显示
iOS 10 - 动态字体Dynamic Type_第1张图片
001-UI.png
2.设置文本默认显示效果
iOS 10 - 动态字体Dynamic Type_第2张图片
002-default.png
3.修改字体
iOS 10 - 动态字体Dynamic Type_第3张图片
003-设置字体大小.png
4.切换回应用,字体发生变化
iOS 10 - 动态字体Dynamic Type_第4张图片
004-改变后.png

你可能感兴趣的:(iOS 10 - 动态字体Dynamic Type)