0

我目前正在开发一个 iOS 6 应用程序。在 iPhone 4/5 上运行此应用程序运行良好。唯一的问题是,随着新 iOS 7 的推出,设计被毁了。状态栏现在是应用程序的一部分,我的应用程序中的所有视图都被推到顶部,与状态栏重叠。

解决此问题的最佳解决方案是什么?我正在使用 UINavigationController 和一些自定义视图。做了一些阅读,有人建议我包含一个自定义容器视图来创建类似 iOS 6“状态栏”的东西,因为顶部的视图将是黑色和空的。有没有其他解决方案?或者也许是修复我的应用程序以支持 iOS 6 和 7 设计的正确方法?

4

3 回答 3

1

一种解决方案可让您:

  • 同时支持 iOS6 和 iOS7 作为部署目标。
  • 保留现有的 iOS6 风格代码,并推迟重新设计的影响

. . . 是将以下内容添加到您的视图控制器中:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7"))
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

. . 因为,我使用的是基于代码的视图,所以我在 loadView 中添加了它,但是它也可以在 viewDidLoad 中使用

于 2013-09-26T09:12:53.987 回答
1

有一个最简单的解决方案。我们必须感谢苹果的这个概念。

查看下面的解决方案

  1. 首先在情节提要/xib 中从实用程序检查器窗口第 4 个选项卡更改屏幕大小为 4"
  2. 根据设计安排您的 uicontrols(即在状态栏下方开始框架)
  3. 现在转到实用程序检查器窗口的第 5 个选项卡
  4. 您必须为每个控件设置框架
  5. 将视线转到框架下方,您可以看到 iOS6/7 Deltas
  6. 在 DeltaY 字段中,每个控件减少 20 个像素。我的意思是在 Delta Y 字段中填写 -20
  7. 所以现在用 iOS7 和 6 运行你的项目,你会得到你想要的。

注意: 您必须取消选中“使用自动布局”才能使用增量

享受编程!!

检出 Y 位置的 Delta 值

于 2013-09-26T08:46:50.340 回答
-1

在 didFinishLaunching 的 AppDelegate.m 中试试这个

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

       [application setStatusBarStyle:UIStatusBarStyleLightContent];

       self.window.clipsToBounds =YES;

       self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
于 2013-09-26T09:15:27.183 回答