4

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

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

有没有更好的办法?

提前致谢!

4

2 回答 2

2

仅当 iOS 版本低于 7 时,您才能动态修补 UIFont。

您应该如何修补不存在的方法:

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

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

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

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

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

于 2013-09-21T19:41:25.770 回答
1

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

于 2013-09-20T19:45:35.117 回答