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

4

在发布这个问题之前,我在互联网上冲浪了几个小时。以下是我的问题:

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

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

所以我开始在互联网上搜索(因为我的团队领导也不知道如何实现它)。我找到了一些链接,但是不知道具体该怎么做。是的,我在stackoverflow和google上看过帖子。

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

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

而且我听说如果部署版本是6.1,你无法将其上传到App Store。此外,我将部署设置为7.0,但是我无法在iOS6设备上运行它。

我应该如何开发应用程序,以便它可以在iOS 6、7上运行,并上传到AppStore呢?

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

我没有使用Storyboards。我只使用XIB。


2
我听说如果部署版本是6.1,就不能将其上传到App Store - 不,这是不正确的。还要拥有相同的XIB并学会设置差值以在iOS6和iOS7上同时运行。 - βhargavḯ
@βhargavḯ 是的,我之前也听说过Delta相关的事情。 我需要做出任何更改吗?就像在IB中的XIB中有“Interface Builder Document”选项一样,我需要将其设置为iOS 6.1或更高版本,还是7.0? - Jasmeet
1
@Jeev,我已经写下了设置delta的步骤,请按照它们操作,如果有不清楚的地方请告诉我。 - PunjabiCoder
@PunjabiCoder 感谢您的回复。我没有使用Story board。我按照您答案中的第3点和第4点进行操作,但无法同时看到iOS6和iOS7,请指导。 - Jasmeet
@Jeev 你使用Xib吗?还是通过编程方式创建GUI界面? - Avt
2个回答

5
不需要为iOS6创建单独的xib文件。您需要同时设置iOS7和iOS6的UI。
1.打开Storyboard,然后单击助理编辑器。 2.现在在助理编辑器中打开Storyboard预览。 3.助理编辑器右下角有一个按钮,上面写着iOS7或更高版本,请单击它并选择iOS6或更早版本。 4.现在,您可以在屏幕上并排看到iOS7和iOS6的UI。 5.现在选择特定的视图控制器,然后选择大小检查器。 6.在大小检查器中,您只需要为iOS6屏幕设置iOS6/7 Delta即可。
iOS6和iOS7的主要UI区别在于,在iOS7中,状态栏包含在视图控制器内部。这意味着您的视图控制器比iOS6多20个像素。您需要调整您的项目。根据iOS 7设计您的项目,并将Δy设置为-20
请参阅以下链接:https://developer.apple.com/library/IOs/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html 如果您有任何问题,请告诉我。

谢谢回复。我没有使用Story board。我按照您答案中的第3点和第4点进行操作,但无法同时看到iOS6和iOS7,请指导。 - Jasmeet
1
对于xib,步骤也是相同的。只需点击xib,打开助理编辑器。现在在助理编辑器顶部搜索“automatic”。单击它并选择其中的“预览”。在那里,您可以看到选择iOS6或更高版本的选项。 - PunjabiCoder
好的,我正在研究。很快会联系你。我遇到了一些问题。我的应用程序崩溃了,因为我实际上是在iPhone 7上开发的。在iOS6的iPhone上运行时,它确实显示1,2个视图,但是当它进入某个视图(我在其中使用了一个表格)时,它就会崩溃,并显示“NSInvalidArgumentException”,原因是:“-[UITableView setSeparatorInset:]:未识别的选择器”。这意味着它与表格有些问题。我该如何处理这样的问题? - Jasmeet
1
我已在答案中添加了一张图片。点击红圈内的按钮,您将看到预览,然后在右下角选择iOS6或更高版本。 - PunjabiCoder
谢谢Manpreet提供的图片。请也看一下我的最后一条评论。 - Jasmeet
1
我可以看到两个视图并排显示。但问题是我的XIB是为iPhone 4设计的,而它显示了iPhone 5的预览屏幕。 - Jasmeet

1

如此多的问题...:

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

不需要

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

这正常

3.但在iOS 7上,视图略有扭曲。

这是由于透明状态和导航栏造成的。

4.我听说如果部署在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

enter image description here


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