我的应用程序从iOS6到iOS7标签问题

我的应用程序从iOS6到iOS7标签问题,ios,iphone,objective-c,ios7,Ios,Iphone,Objective C,Ios7,我想将iOS6应用程序更改为iOS7.i。我想要iOS7兼容性。当我在iOS7模拟器中运行我的应用程序时,视图正在向上移动。 有人能帮我吗?为了简单起见,iPhone屏幕的全尺寸是非视网膜的,因为我们使用的布局坐标是320x480 在iOS6和以前的版本中,从开发人员的角度来看,屏幕大小实际上是320x460,状态栏顶部有一个320x20条。在iOS6中,点x=0,y=0转换为iOS7点x=0,y=20 这是因为现在状态栏是透明的,您可以控制顶部的320x20条带的外观 如果你想同时支持这两个版

我想将iOS6应用程序更改为iOS7.i。我想要iOS7兼容性。当我在iOS7模拟器中运行我的应用程序时,视图正在向上移动。
有人能帮我吗?

为了简单起见,iPhone屏幕的全尺寸是非视网膜的,因为我们使用的布局坐标是320x480

在iOS6和以前的版本中,从开发人员的角度来看,屏幕大小实际上是320x460,状态栏顶部有一个320x20条。在iOS6中,点x=0,y=0转换为iOS7点x=0,y=20

这是因为现在状态栏是透明的,您可以控制顶部的320x20条带的外观

如果你想同时支持这两个版本,你需要检查他们使用的是哪个版本的iOS,如果他们使用的是iOS7或更高版本,你需要在几乎所有地方将origin.y增加20

下面是如何以编程方式确定正在运行的iOS版本:

NSString *version = [[UIDevice currentDevice] systemVersion];
int ver = [version intValue];
if (ver < 7) {
    //iOS 6 work
} else {
    //iOS 7 related work
}

由于默认情况下viewcontroller具有扩展边,并且它将位于顶栏下,因此将其设置为UIedgeRectNone,则视图将不会位于顶栏下

self.edgesForExtendedLayout = UIRectEdgeNone;

要同时支持iOS6和iOS7而不费吹灰之力,最好的方法是将所有视图控制器打包到导航控制器中,并在必要时将导航栏设置为隐藏。
这将允许自动且干净地处理状态栏行为的更改。

人们正在慢慢地寻找正确答案,但还没有给出答案。我挣扎了好几个星期,终于想出了如何正确处理它

如何处理iOS 6和iOS 7之间的布局差异,以便无需自定义代码即可同时支持这两个版本: 答案是不同的,这取决于您使用的是自动布局还是支柱和弹簧

对于自动布局,可以将顶部约束绑定到顶部布局导向,这是一条从窗口内容区域开始的假想线。它位于存在的任何状态栏或导航栏下,如果其中一项或两项都未显示,则会向上移动

对于基于struts和strings的布局,IB有一种机制可以让您自动调整视图布局

选择nib文件/故事板文件

打开右侧的文件检查器,查找标题为View as的项目。将其设置为iOS 6.1及更早版本。这可以做几件事。它使您的用户界面看起来像是在iOS 6下运行,并且使几何图形工作起来就像在iOS 6.1规则下运行一样。当显示状态栏时,内容视图的0.0点位于状态栏下,而您的有效屏幕大小则小20点

接下来,选择固定在屏幕顶部的视图,并选择尺寸检查器。实用程序区域中类似标尺的选项卡。尺寸检查器有一个新的部分称为iOS 6/7 Delta。这使您可以指定在其他版本的iOS中运行时应用于选定视图的更改,而不是在上面的“文件检查器”中指定的版本。由于我们指定了iOS 6,因此当前布局使用的是iOS 6规则,因此我们希望指定在运行iOS 7时所需的更改。如果我们在文件检查器中将视图指定为ios7,我们将看到ios7布局,并且指定在ios6下运行时要进行的更改。你可以用任何一种方法。然而,要小心。如果您有下面描述的增量值,然后切换此设置,IB将以非常混乱和破坏性的方式在您身上移动内容。不要那样做。为视图选择一个值作为设置,并在整个应用程序中使用它,否则您将非常困惑和沮丧

您希望使导航栏高出20点,然后自动为状态栏着色并调整其布局,使其标题和栏按钮项不会与状态栏重叠

通常,您还希望使固定在屏幕顶部的视图具有20个点的增量Y,以便向下移动视图,为状态栏腾出空间

如果视图也固定在屏幕底部,因此其大小与屏幕大小相适应,则可能还需要-20像素的增量高度

要让一切正常工作需要一些修补,但通过正确设置iOS 6/7增量值,您可以创建在两个OS版本上都能正常工作的IB文件,而无需任何自定义代码


如果你有自定义代码来做一些事情,比如调整用户界面方向的布局,事情会变得非常混乱。

你读过关于iOS 7的更改吗?哪个视图在向上移动?请给我们更多的信息,我的游戏设计在iPhone 5s和iPad上看起来不太好。我怎样才能解决这个问题?我的一些标签错位了。在iPad上,一些标签被剪掉了。在iPhone 5的屏幕上,它完美地显示了Define SYSTEM_VERSION(定义系统版本)小于v[[UIDevice currentDevice]systemVersion]compare:v options:NSNumericSearch]==传感器在*\u Prefix.pch中删除此宏可能会很方便。你有一点,但它仍然不能解决我的问题。因为如果iPhone4和5是
两个都是7。他们的按钮仍然不同。在我的4号电脑上,它是干净的,但在5号电脑上,它被错配了。你也可以用同样的逻辑来区分不同的屏幕大小。这确实解决了你的问题。你的问题是关于iOS 6和iOS 7之间的区别,而不是关于iPhone4和iPhone5之间的区别。无论屏幕大小如何,Y与iOS6和iOS7的差值应为20像素。如果你已经做到了这一点,那么任何对齐问题都与不同的屏幕大小有关,而不是不同的iOS版本。你的问题是关于iOS版本的。