在iOS 7上使用iOS 7之前的外观和感觉

7
如何在您的应用程序中使用 iOS 7 之前的外观和感觉?我刚刚升级到 iOS 7,我的手机上有一些应用程序仍在使用 iOS 7 之前的外观和感觉。例如,一个应用程序正在使用旧的 UIPickerView 外观,但它正在运行 iOS 7。
当我在 iOS 7 模拟器上测试我正在开发的应用程序时,它会自动使用新的 UIPickerView,而无需进行任何更改。
因此,在我将应用程序升级到 iOS 7 之前,我希望我的应用程序使用 iOS 7 之前的外观和感觉。
这是在 iOS 7 上运行 Checkmark 的图像,您可以清楚地看到它正在使用 iOS 7 之前的键盘:

问题有点混淆,您是说在运行iOS 7的一个应用程序中,显示为iOS 6样式,而其余部分则为iOS 7样式吗? - Nicholas Smith
使用另一个视图实现您的自定义选择器,使其看起来像旧的选择器。 - metsburg
@NicholasSmith 不是,相反的... - Peter Warbo
4个回答

10

这很简单:您需要使用iOS6 SDK构建您的应用程序。iOS 7会通过检查应用程序链接的SDK来检测旧应用程序。

您可以通过选择目标,切换到构建设置选项卡,然后在“架构”下找到“基础SDK”构建设置来在Xcode中切换“基础SDK”。

如果您没有旧版SDK,则可能需要使用较旧版本的Xcode(4.6)。Rob Napier在这里描述了如何将新版Xcode指向旧版SDK。

请注意,虽然许多UI元素保留其iOS 6外观,但有些不保留(UIAlertViewUIActionSheet)。


UIKit和其他苹果框架是动态链接的。据我理解,您不能选择使用哪些UIKit组件...也就是说,如果您正在运行iOS 7,则将使用iOS 7组件。如果我误解了您的意思,请纠正我。 - JRG-Developer
@JRG-Developer 正确。然而,苹果公司构建了iOS7的UIKit.framework,以便检测应用程序链接的版本,如果该版本不是iOS7,则模拟旧的外观和行为。 - Nikolai Ruhe
我不相信这是事实,也不认为我们的应用程序会以这种方式运行...你能引用一些说明文件来证明吗? - JRG-Developer
@JRG-Developer...否则,那些尚未更新到iOS7的旧应用程序在运行iOS 7的设备上将无法正常工作。 - Nikolai Ruhe
@JRG-Developer 并不罕见,苹果使用这项技术:在运行时检测库的链接版本,并对较旧的版本进行不同的处理。Core Foundation 甚至包含了一个专门用于此目的的私有函数:_CFExecutableLinkedOnOrAfter - Nikolai Ruhe
显示剩余11条评论

0

如果您正在使用标准UI组件,则在iOS 7上会自动获得新样式,我还没有发现强制它们显示为iOS 6的方法。您唯一能够让它们显示为iOS 6元素的方法是构建自定义元素并自行设置样式,但这样做存在风险,因为当您提交给Apple时,他们可能会基于违反HIG的原因而拒绝。


我实际上正在运行一个应用程序,它看起来“完全”与iOS 7之前的样子一样(甚至使用了iOS 7之前的键盘,我认为这是不可能的样式)。因此,似乎有一种方法可以在旧应用程序上运行并保留iOS 7之前的外观和感觉。 - Peter Warbo
我没有确认过,但我记得在WWDC上他们说过,无论你使用哪个SDK,系统警告框等系统元素都会采用iOS 7的外观。 - Jason Hocker

0

-1

不仅需要使用 iOS 6 SDK 或更早版本来构建您的应用程序,还需要使用 Xcode 4.6 或更早版本。我刚刚经历了这一切,从 Xcode 5 定位 iOS 6 SDK 远远不够。

幸运的是,您可以双重安装两个版本的 Xcode。只需下载 Xcode 4.6 并将其放入应用程序文件夹中并将其重命名即可。


真的吗?我成功地在Xcode 5中安装了iOS 6 SDK,并且编译没有任何问题。 - Peter Warbo
@PeterWarbo 它编译通过了,但是运行应用程序时的期望与现实不同。UIButtons不再有边框,由于半透明性,tableviews被偏移,还有一些其他的样式问题。 - MobileMon
在测试应用程序时,请确保使用iOS 6模拟器。 - Peter Warbo
嘿先生。我没有给你的帖子点踩。而且,我也没有尝试你的建议,因为Nikolai的方案已经起作用了。 - Peter Warbo
1
至少有点不稳定。我在Xcode 5中安装了SDK6,在两台机器上都进行了相同的操作,但在一台机器上我看到了模拟行为,而在另一台机器上则没有。因此,虽然它可能会工作,但保险起见,最好继续使用Xcode 4。 - DrMickeyLauer
显示剩余2条评论

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