iOS - 动态类型和界面生成器

Posted

技术标签:

【中文标题】iOS - 动态类型和界面生成器【英文标题】:iOS - Dynamic Type and Interface Builder 【发布时间】:2015-08-18 20:45:40 【问题描述】:

尝试实现对动态类型的支持并遇到问题。我在 Interface Builder 中的标签或其他东西上设置了我想使用的样式。我注册了 UIContentSizeCategoryDidChangeNotification,在处理程序中,我将标签的字体设置为……什么?我怎么知道要使用什么样式?不应该有一个访问器可以让我找到它吗?如果不是,我必须把它放在两个地方,这意味着它们会不同步,我会很生气。有什么想法吗?

【问题讨论】:

【参考方案1】:

我认为这不会让您满意,但请将字体设置为 [UIFont preferredFontForTextStyle:UIFontTextStyleTitle2 或您在 Interface Builder 中设置的任何样式。

忽略 Interface Builder 中的设置。它甚至不值得设置。 Interface Builder 是(大部分)static 表示视图初始状态,但这是 Dynamic 类型。

您可以继承 UILabel 以使其动态化,和/或加入我们在代码中设置视图的阴暗面。

【讨论】:

【参考方案2】:

ios 10 开始,无需遵循此基本原理,因为 adjustsFontForContentSizeCategory 属性允许根据设置中选择的内容类型大小设置 automatic scaling 的字体大小。

所有的文本样式在Apple reference site 和它们的size variations 中都有很好的定义。

【讨论】:

以上是关于iOS - 动态类型和界面生成器的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中用于交互元素的动态类型

动态模拟 iOS 动态类型系统文本大小 (UIContentSizeCategory)

iOS开发笔记系列-基础3(多态动态类型和动态绑定)

带有静态 TableView 单元的 IOS 8 动态类型 - 基本和字幕

iOS 动态类型 - 设置最小字体大小

如何使用 redux 工具包动态生成 reducer 和 action 类型?