iOS 7上的动态类型向后兼容iOS 6

时间:2013-09-20 08:37:31

标签: ios ios6 ios7 uifont

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

上崩溃了

你是如何解决这个问题的? respondsToSelector:并在每个字体设置中拆分两个?

有更好的方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

如何修补未使用的方法:

  1. 准备替换现有的方法。
  2. 检查操作系统版本 - 'respondsToSelector:`是测试它的好方法。
  3. 如果方法不存在,请添加实现。
  4. 在UI7Kit中,我使用addClassMethodForSelector修补它:...由FoundationExtension提供。

    请参阅:https://github.com/youknowone/UI7Kit/commit/701c44a69406ad971794c9ab46aeb0cfac1fa207#L3R57

    此代码添加新方法preferredFontForTextStyle:来自现有方法实现__preferredFontForTextStyle:

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

答案 1 :(得分:1)

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