我始终有应用要求同时支持iOS6
和iOS7
。但由于iOS6
支持,我无法使用iOS7
的某些功能。
例如,我必须执行UIView
反弹动画,iOS6
我必须使用CAKeyframeAnimation
或UIView
动画执行此操作,但iOS7
已UIKit dynamics
为我提供UIDynamicAnimator
课程,我可以使用它。
因此,我应该始终使用CAKeyframeAnimation
或UIView
动画之类的旧方法,因为它同时支持iOS6
和iOS7
,或者通过检查iOS
版本来同时写入?
答案 0 :(得分:1)
从iOS 6版本中无情地剥离需要ios7功能的东西,特别是如果它们是像弹跳动画这样的装饰性东西。
当对此提出质疑时,请告诉您的客户,他们可以花费80%的开发预算来支持不断萎缩的无关用户群,或者他们可以获得真实。 API兼容性只是6到7之间的一个难题。布局问题要困难得多。今天写的任何新应用程序都需要一个非常非常好的理由支持6,特别是8即将到来。
答案 1 :(得分:0)
我认为最好的方法是检查iOS版本并实现两种代码变体。
是的,也许,这是相当多的工作,但在大多数情况下,新iOS版本中提供的最新功能更灵活,更易于理解/集成。在大多数情况下,他们也更加支持。他们得到了Apple的支持,他们更加谨慎,并且他们被弃用的可能性很小。
您可以使用Foundation
运行时变量NSFoundationVersionNumber
和NSFoundationVersionNumber_iOS_6_1
宏来划分代码:
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
// write iOS 7+ code here
}
else {
// write iOS 6.1- code here
}
注意,有时一些最近发布的API可能非常原始。在这种情况下,您应该单独决定是否确实需要立即迁移。
答案 2 :(得分:0)
您可以使用class
API检查课程的可用性。
if ([UIPrintInteractionController class]) {
// Create an instance of the class and use it.
}
else {
// The print interaction controller is not available.
}
有关详细信息,请参阅以下链接Advanced App Tricks