【问题标题】:Dynamic Type on iOS7 backwards compatible with iOS6iOS 7 上的动态类型向后兼容 iOS 6
【发布时间】:2013-09-25 13:49:45
【问题描述】:

我正在尝试在我的应用中设置应与 6.1+ 兼容的动态类型。 我正在使用preferredFontForTextStyle:,它显然在 iOS 上崩溃了

你是如何解决这个问题的? respondsToSelector: 并将每种字体设置分成两个?

有没有更好的办法?

提前致谢!

【问题讨论】:

  • 我遇到了完全相同的问题,但我通过 Interface Builder 在 XIB 中指定了文本样式。

标签: ios ios6 ios7 uifont


【解决方案1】:

只有在 iOS 版本低于 7 时才能动态修补 UIFont。

如何修补不存在的方法:

  1. 准备您自己的替换不存在的方法。
  2. 检查操作系统版本 - 'respondsToSelector:` 是测试它的好方法。
  3. 如果方法不存在,则添加实现。

在 UI7Kit 中,我使用由 FoundationExtension 提供的 addClassMethodForSelector:... 对其进行了修补。

见:https://github.com/youknowone/UI7Kit/commit/701c44a69406ad971794c9ab46aeb0cfac1fa207#L3R57

此代码从现有方法实现中添加新方法preferredFontForTextStyle: __preferredFontForTextStyle:

此外,UI7Kit 现在开始支持该方法。 (以非常粗略的方式) 如果你愿意,试试吧。

【讨论】:

  • 我会检查你的项目!
【解决方案2】:

我一直在考虑这个;如果应用程序在 iOS 6 上运行,最好的方法可能是在运行时手动将 preferredFontForTextStyle: 方法添加到 UIFont 类,然后在那里动态选择适当的系统字体大小。 github 上的 UI7Kit 项目为其他方法做了类似的事情,但不幸的是不是这个。

【讨论】:

  • 感谢您缺少功能通知。我现在将它的粗略实现添加到 UI7Kit。在问题页面中感谢任何功能请求。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2011-11-22
  • 2011-10-05
  • 2013-10-29
相关资源
最近更新 更多