4

我附上了 UI 在不同 iOS 版本上的外观。

这是我下面的代码:

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:contactsViewController];
[self.viewController presentModalViewController:navController animated:YES];

iOS 6

在此处输入图像描述

IOS 7

在此处输入图像描述

第一个问题是 iOS 6 中的状态栏我没有状态栏。第二个问题是过度绘制两个视图。如何解决?

4

3 回答 3

4

您可能希望使用可调整大小的图像:

[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch];

或者,正如AliSoftware建议的那样,将扩展布局边缘设置为UIRectEdgeNone(一定要检查是否edgesForExtendedLayout支持(如果绑定到分配在 iOS 6.x 设备上运行的此属性,您的应用程序将崩溃):

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
}
于 2013-09-15T15:38:07.843 回答
2

我强烈邀请您阅读 Apple 的“UI 转换指南”,其中解释了 iOS6 和 iOS7 之间的所有这些差异以及如何相应地调整您的代码。

如果你希望你的视图即使在 iOS7 中仍然在你的状态栏下,最简单的方法是UIViewControllerself.edgesForExtendedLayout = UIRectEdgeNone它的viewDidLoad.

于 2013-09-15T15:36:48.793 回答
1

您可以通过编写此方法隐藏呈现的视图控制器中的状态栏

- (BOOL)prefersStatusBarHidden {
    return YES;
}
于 2013-10-21T16:06:56.183 回答