【问题标题】:Use pre-iOS 7 look and feel on iOS 7在 iOS 7 上使用 iOS 7 之前的外观
【发布时间】:2013-09-11 11:01:01
【问题描述】:

如何为您的应用使用 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 样式显示?
  • 使用另一个视图实现您的自定义选择器,让它看起来像旧的。
  • @NicholasSmith 不,相反...

标签: ios objective-c cocoa-touch ios6 ios7


【解决方案1】:

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

你可以在Xcode中通过选择target来切换“Base SDKs”,切换到build settings选项卡,在“Architecture”下找到“Base SDK”build setting。

如果您没有旧版 SDK,您可能需要使用旧版 Xcode (4.6)。 Rob Napier describes here 如何将较新的 Xcode 指向较旧的 SDK。

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

【讨论】:

  • 啊哈,这意味着我需要同时安装 Xcode 4.6 和 Xcode 5.0?因为当我升级时,我只是将 Xcode 拖到了我的应用程序文件夹(这是建议的),它覆盖了我的旧 Xcode 4.6。
  • @PeterWarbo 是的,完全正确。安装多个版本的 Xcode 不是问题(您甚至可以同时运行它们)。我刚刚将旧版本重命名为 Xcode 4.6。
  • UIKit 和其他 Apple 框架是动态链接的。据我了解,您无法选择使用哪个UIKit 组件……也就是说,如果您运行的是iOS 7,它将使用iOS 7 组件。如果我混淆了您的意思,请纠正我?
  • @JRG-Developer 正确。然而,Apple 构建了 iOS7 的 UIKit.framework,以便它检测应用程序所链接的版本,如果该版本不是 iOS7,它会模拟旧的外观和行为。
  • 我不认为是这种情况,我认为我们的应用程序也不会有这种行为...您可以参考其他地方的文档吗?
【解决方案2】:

如果您使用的是标准 UI 组件,您将在 iOS 7 上自动获得新样式,我没有办法强迫它们像在 iOS 6 中那样出现。唯一的方法是您'将能够让它们显示为 iOS 6 元素是构建自定义元素并自己设置样式,但是这样做有风险,当您提交给 Apple 时,他们会以破坏 HIG 为由拒绝。

【讨论】:

  • 我实际上正在运行一个看起来与 iOS 7 之前“完全一样”的应用程序(它甚至使用的是 iOS 7 之前的键盘,我认为这是不可能的样式)。因此,似乎有一种方法可以运行您的旧应用并在其上运行 iOS 7 之前的外观。
  • 我没有证实这一点,但我想在 WWDC 上他们说你会让 iOS 7 寻找系统的东西,比如警报视图,这与你使用的 SDK 无关。
【解决方案3】:

在运行 iOS 7 的设备上,所有系统 UI(例如警报和通知)都使用 iOS 7 外观,即使您的应用当前使用的是早期外观。

来自 Apple 过渡指南: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/uid/TP40013174-CH14-SW1

【讨论】:

    【解决方案4】:

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

    幸运的是,您可以同时安装两个版本的 Xcode。只需下载 Xcode 4.6 并将其放入您的应用程序文件夹中,然后重命名为其他内容

    【讨论】:

    • 真的吗?我设法在 Xcode 5 中安装了 iOS 6 SDK,它编译没有任何问题。
    • @PeterWarbo 它可以编译,但运行应用程序时的期望是另一回事。 UIButtons 不再有边框,tableviews 由于半透明而偏移,它们是其他一些样式问题
    • 确保在测试应用时使用 iOS 6 模拟器。
    • @PeterWarbo 但没有人在 iOS 6 上才是重点!我希望应用程序使用 iOS 6 编译并在 iOS 7 上运行,并且看起来与在 iOS 6 上一样,即使它现在在 iOS 7 上运行(如果你遵循我的技术,它会这样做)
    • 它至少是片状的。我确实在 Xcode 5 中安装了 SDK6,在两台机器上做了同样的事情,在一台机器上我看到了模拟行为,而在另一台机器上,我没有。所以——虽然它可能有效——故障安全的方法是继续使用 Xcode 4。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多