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

标签 ios ios6 ios7 uifont

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

上崩溃了

您如何解决这个问题? respondsToSelector: 并将每个字体设置一分为二?

有没有更好的办法?

提前致谢!

最佳答案

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

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

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

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

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

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

此外,UI7Kit 现在开始支持该方法。 (还很粗糙) 如果需要,请尝试。

关于ios - iOS 7 上的动态类型向后兼容 iOS 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912270/

相关文章:

ios - 如何在 iOS 中使用 Bing Api 翻译语言?

objective-c - 当被模态视图 Controller 覆盖时,iOS 6 View Controller 布局在方向更改后不会更新

iOS 6 iAd 方向问题 - iAds 将我的仅纵向应用程序旋转为横向并保持原样

ios7 - iOS 7 didEnterRegion 根本没有被调用

ios - 无法将状态栏设置为浅色内容(iOS7)

ios - 如何显示激活蜂窝数据 iOS 的提醒

ios - UILabel:如何更改除底部边框以外的所有边框?

ios - iOS 应用程序共享框架吗?

ios - 更新(继续开发)iOS 应用程序需要什么 "source code files"?

ios - UITableViewCell 中的 UIButton 在 iOS 5x 中没有响应但在 iOS 6 中响应