2

我有一个带有自定义背景的 UINavigation 栏,我在代码的 viewDidLoad 方法中这样设置:

UIImage *image = [UIImage imageNamed:@"V2_navbar"];
[self.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

在 iOS 5 中,结果如下所示:

在此处输入图像描述

在 iOS 6 中,结果如下所示:

在此处输入图像描述

一方面,状态栏现在是黑色的,这没关系。但是,如果您仔细查看第二张图片,您会注意到我的导航栏的顶角现在被四舍五入,这看起来很糟糕。

有谁知道如何解决这一问题?

4

1 回答 1

2

基于快速实验...

作为一种解决方法,只需在项目设置中将状态栏样式设置为黑色半透明即可。这样做的最终效果是,您UIWindow将获得整个屏幕,包括状态栏后面的区域——在 3.5 英寸设备上,您的窗口将是 480pts 而不是 460。但是,除非您的视图控制器设置wantsFullScreenLayoutYES您,否则您不会期望绘制它区域,它看起来与黑色不透明相同。

如果您的代码在某处以编程方式设置状态栏样式,您可能希望禁用它。

编辑:回答 Matt.Z 的担忧... Apple 添加了圆角,因为那里的设计师有时喜欢屏幕边缘的圆角。最初的 1984 年 Macintosh 桌面在所有四个角落都有它们,并且它们一直存在到 OS 9,OS X 最初将它们保留在两个顶部角落,但后来它们在 10.5 中消失了。

在这种情况下,他们似乎采取了另一种方式,决定在 iOS 5 和 6 之间的“显示器边缘”添加圆角。因此,Apple 纯粹出于审美原因添加了圆角。

通过设置您将应用程序能够用作全屏的区域扩展到状态栏下方,因此“显示边缘”不再是导航栏的顶部wantsFullScreenLayoutYES由于 Apple 不想通过从显示区域的中间切出大块来破坏应用程序,因此 iOS 不会添加角落。

于 2012-09-27T01:15:41.757 回答