比如我以前在 iOS7 版本下开发了一个 APP,一切正常。
后来苹果发布了 iOS8,由于 iOS8 UIAlertController 替代了 UIActionSheet 和 UIAlertView,造成程序在 iOS8 的设备中,UIActionSheet 无法正常使用。
那么问题有四个:
1、我该如何强制 APP 在真机上,以 iOS7 模式运行这个程序?理论上应该可以吧,我记得以前有些程序虽然我用的 iOS7 设备,但是 APP 界面还是 iOS6 的风格,绝对的老程序。
2、如果我更新了代码,用 UIAlertController 修复了问题,那么如果真机是 iOS7 设备,会不会有新的问题出现?比如 iOS7 根本不知道 UIAlertController 是啥导致崩溃?
3、对于一个老程序来说,并没有过多考虑屏幕尺寸的问题, iPhone4、4S、5、5S 都一样处理的,如果这个程序不做修改直接放到 iPhone6 & iPhone6 Plus 上运行,会发生什么情况?可以完美适配么?
4、假如,即使真机是 iOS8 也可以完美运行 iOS7 SDK 写的程序(问题1上说的约束SDK、运行环境?),并且假如我按照 iPhone5S 的尺寸,在 iPhone6 Plus 上也能完美运行。我是不是以后都可以只写 iOS7 SDK + iPhone5S 的代码,然后指望 iPhone6 Plus 自动适配屏幕,然后以后出 iOS9、iOS10 都不会出 BUG ?
iOS 开发新手,跪求大神作答。谢谢。
怪我咯2017-04-17 13:57:55
不能「強制使用者」。即使能,也不要這樣做。蘋果非常鼓勵開發者盡快適應新的系統,並拋棄舊的系統。倒是可以用舊版的 SDK 編譯打包,如果你一直沒有升級 Xcode 的話。
可能會有問題,取決於你使用的 API 和類別。如果你用的 API 或類別標示是NS_ENUM_AVAILABLE_IOS(8_0)
,那麼在 7.0、7.1 系統上就會crash。為了同時適應這兩個系統,你可以判斷系統版本,或是用respondsToSelector:@selector(……)
判斷應該使用新 or 老 API。
如果不加 LaunchScreen,會進入相容模式,直接拉伸。效果肯定是不完美的,就是字號、圖片全都拉大了,但也湊合能看。最好專門做適配。如果加了 LaunchScreen,能否適配就看你的實現方式了。
不要想了。以新系統為主,與舊系統相容。