2013-09-30 38 views
32

如何支持UILabelUITextView动态类型中的iOS 7?我正在调整我们的iOS 7项目之一,并希望支持这种辅助功能。我无法在Apple的iOS开发人员网站上找到关于它的具体教程。任何链接或示例代码将不胜感激。如何支持动态类型在标签中的iOS 7

+0

检查本教程【如何支持动态类型中的iOS 7应用](http://mythoughtsandexperiments.blogspot.in/2013/12/how-to-support-dynamic-type-in​​-ios-7.html) –

回答

57

如果使用新的方法UIFont那么你几乎没有 - 你只需要添加观察者监听变化。

您不应设置特定的字体大小,而应在样式化标签时使用preferredFontForTextStyle:及相关方法(如果您使用的是Interface Builder,则可以直接在检查器中选择样式)。例如:

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

一旦你这样做,你应该听为UIContentSizeCategoryDidChangeNotification。当您收到此通知,您应该布置你的标签,以支持新选定的大小(如果您正在使用自动布局,这是正常的发送invalidateIntrinsicContentSize你的意见一样简单)。

如果你正在寻找的官方文档,然后看看在Text Programming Guide

+0

是不是有访问在接口挑风格的方式生成器?如果不是,那看起来像是一个大的疏忽。现在我必须把它放在两个地方,这意味着它将不可避免地失去同步。 – MacsimusPrime

+0

'preferredFontForTextStyle'虽然返回一个系统字体,是否有任何方式自定义字体要做到这一点? – kevin

1

在斯威夫特3和iOS 10可以使用

headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline) 
headline.adjustsFontForContentSizeCategory = true 

更多信息请参见this excellent post,尤其是如何支持iOS的前10