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 ,设置居中显示
001-UI.png
2.设置文本默认显示效果
002-default.png
3.修改字体
003-设置字体大小.png
4.切换回应用,字体发生变化
004-改变后.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容