如何使 iOS 7 应用向后兼容?

Posted

技术标签:

【中文标题】如何使 iOS 7 应用向后兼容?【英文标题】:How to make iOS 7 app backward compatible? 【发布时间】:2014-03-13 12:30:56 【问题描述】:

在发布此问题之前,我上网了几个小时。我来了:

我正在开发一个应用程序。我使用 X-Code 5。设置部署目标 ios 7。

我几乎完成了应用程序的 UI(适用于 iOS 7)。昨天,我的团队负责人告诉我,客户希望应用程序向后兼容,也就是说它也应该在 iOS 6.1 上运行。

所以我开始上网(因为我的团队负责人也不知道具体如何完成)。我找到了一些链接,但很困惑到底该怎么做。是的,我也读过关于 *** 和 google 的帖子。

如何使我的应用也兼容 iOS 6?我需要获取不同的 XIB 文件吗? (这将是太多的工作)。

我做了一件事,我将部署目标设置为 iOS 6.1 或更高版本。该应用程序在设备上运行。有趣的是,该应用程序也在 iOS 7 上运行。但在 iOS 7 上,视图有点失真。

我听说如果 Deployment 是 6.1,你不能将它上传到 App Store。此外,我将部署设置为 7.0,但后来我无法在 iOS6 设备上运行它。

我应该如何开发应用程序,以便它适用于 iOS 6,7 并且也可以上传到 AppStore。

请帮忙。从过去 4 个月开始,我一直在开发应用程序。我一直在尽力而为穆。我知道,这个问题对某些人来说可能看起来很愚蠢。

而且我没有使用故事板。我只使用 XIB 的

【问题讨论】:

我听说如果部署是 6.1,您无法将其上传到 App Store - 不,这不是真的。还具有相同的 XIB 并学习设置 delta 以使其在 iOS6 和 iOS7 中都能正常工作。 @βhargavḯ 是的,我以前也听说过一些与 delta 相关的事情。我是否必须做出任何改变。就像在 IB 中的 XIB 中一样,有选项 LIKE “interface Builder Documment”,我是否需要将其设置为 ios 6.1 或更高版本或 7.0 @Jeev 我已经编写了设置增量的步骤,请按照它们进行操作,如果您有不清楚的地方请告诉我。 @PunjabiCoder 感谢您的回复。 1.我没有使用故事板。我从您的回答中遵循了第 3 点和第 4 点。 ios6和ios7看不到,请指导 @Jeev 你用 Xib 吗?或者您以编程方式制作 GUI? 【参考方案1】:

无需为 iOS6 创建单独的 xib 文件。您需要为 iOS7 和 iOS6 设置 UI。

    只需打开故事板,然后单击助理编辑器。 现在在助理编辑器中打开情节提要预览。 助手编辑器右下角有一个按钮,显示iOS7或更高版本,点击它并选择iOS6或更低版本。 现在您可以在屏幕上并排看到 iOS7 和 iOS6 的 UI。 现在选择一个特定的视图控制器,然后选择尺寸检查器。 在尺寸检查器中,您只需为 iOS6 屏幕设置 iOS6/7 Deltas。 就是这样。

iOS 6 和 iOS 7 的主要 UI 区别在于 iOS 7 中的 viewcontroller 中包含状态栏。这意味着您的 view controller 比 iOS6 大 20 px。你必须调整你的项目。根据 iOS 7 设计您的项目并将 Δy 设置为 -20

也检查这个网址:https://developer.apple.com/library/IOs/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html

如果您有任何问题,请告诉我。

【讨论】:

感谢您的回复。 1.我没有使用故事板。我从您的回答中遵循了第 3 点和第 4 点。 ios6和ios7看不到,请指导 xib 的过程也一样。只需点击xib。打开助理编辑器。现在在助手编辑器顶部搜索自动。单击它并在其中选择预览。在那里您可以看到选择 ios6 或更高版本的选项。 好的,正在调查。很快就会连接你。我遇到了一些问题。我的应用程序崩溃了,我实际上是在 iphone 7 中开发的。在 iphone 上运行 ios6 时。它确实显示了 1,2 个视图,但是一旦它出现在 som 视图中(我使用了一张桌子)它就会崩溃。并说'NSInvalidArgumentException',原因:'-[UITableView setSeparatorInset:]:无法识别的选择器这只是意味着它的表格有问题。我该如何处理这样的问题 我在答案中添加了一张图片。点击红圈内的按钮,出现预览,点击右下角选择ios6或更高版本。 我可以并排看到两个视图。但问题是我的 XIB 适用于 iphone 4,它显示了 iphone 5 的预览屏幕【参考方案2】:

这么多问题...:

1.我需要采取不同的XIB文件吗?

没有

2.我做了一件事,我将部署目标设置为 iOS 6.1 或更高版本。该应用程序在设备上运行。有趣的是,该应用程序也在 iOS 7 上运行。

应该是这样的

3.但在 iOS 7 上,视图有些失真。

是因为transfluent状态和导航栏。

4.我听说如果 Deployment 是 6.1,你不能把它上传到 App Store。

你可以。您必须支持 iOS 7。6.1 - 是最低要求的版本。所以一切正常。

5.此外,我将部署设置为 7.0,但后来我无法在 iOS6 设备上运行它。

如果最低为 7.0,则不能在 6.1 上运行它。你是对的:)

6.我应该如何开发应用程序,以便它适用于iOS 6,7并且也可以上传到AppStore。

如果编译器向您显示一些兼容性警告,您应该修复它们。此外,当您的应用程序运行超过 7.0 时,它应该具有 iOS7.0 样式。 (没人关心它在 iOS 6.1 设备上的外观)。

更新:

如何设置 Delta?

如果您以编程方式创建 GUI,则定义

//Screen height
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_35 (SCREEN_HEIGHT == 480)
#define SCREEN_40 (SCREEN_HEIGHT == 568)

然后按照下面的方式使用

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, SCREEN_40 ? 200 : 100)];

如果您使用的是 Xib 或 Storyboard

【讨论】:

以上是关于如何使 iOS 7 应用向后兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6 自适应 UI 如何向后兼容 iOS 7 和 iOS 6?

如何创建与 Windows 7 向后兼容的缩放和大小更改的 Per-Monitor DPI 感知应用程序?

“使用 Apple 登录”是不是允许应用向后兼容 iOS 12 及更低版本?

iOS 7状态栏半透明,具有向后兼容性

Xcode 5 Asset Catalog 是不是向后兼容 pre-iOS 7?

使用 SDK 4.2 开发的 iPhone 应用程序需要向后兼容 iOS 3.1.3 .. 简单的方法?