iOS7上的动态字体是否向后兼容iOS6?

4
我正在尝试在我的应用程序中设置可动态调整字号的功能,并且要兼容6.1+版本。 我正在使用preferredFontForTextStyle:,但是iOS <7.0会崩溃。
您如何解决这个问题? 使用respondsToSelector:并将每个字体设置分成两部分?
有更好的方法吗?
提前感谢!

我遇到了完全相同的问题,但是我通过Interface Builder在XIB中指定了文本样式。 - Robert Atkins
2个回答

2
如果iOS版本低于7,你可以动态地修补UIFont。如果要修补不存在的方法,应该怎么做呢?
1. 准备自己的替代方法。 2. 检查操作系统版本——'respondsToSelector:`是一个很好的测试方法。 3. 如果方法不存在,则添加实现。
在UI7Kit中,我使用FoundationExtension提供的addClassMethodForSelector:...来修补它。
参见:https://github.com/youknowone/UI7Kit/commit/701c44a69406ad971794c9ab46aeb0cfac1fa207#L3R57 这段代码从现有的方法实现__preferredFontForTextStyle:中添加了新的方法preferredFontForTextStyle:。
此外,UI7Kit现在开始支持该方法。(但还处于非常粗糙的阶段) 如果您想试一试,请尝试一下。

我会检查你的项目! - Nicolas S

1
我一直在思考这个问题;最好的方法可能是在运行于iOS 6的应用程序中手动将preferredFontForTextStyle:方法添加到UIFont类上,然后在那里动态选择适当的系统字体大小。Github上的UI7Kit项目对其他方法做了类似的处理,但不包括这个方法。

感谢您提供有关缺失功能的通知。我已经在UI7Kit中添加了它的初步实现。任何功能请求都可以在问题页面上进行。谢谢! - youknowone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接