在 iOS8 中使用 clipsToBounds = YES 时状态栏完全变黑。我该如何改变这个?
Status Bar turning completely black when using clipsToBounds = YES in iOS8. How do I change this?
我正在通过 AppDelegate 中的 UINavigationBar 外观代理将 NavigationBar 的半透明 属性 设置为 NO。
然后,为了去掉 UINavigationBar 和我下面的视图之间的 1 像素高度分隔符,在我的 ViewController 中,我设置 self.navigationcontroller.navigationbar.clipsToBounds = YES;
。
这是去掉分隔符,达到类似这样的效果...
UINavigationBar 下方有一个包含日期的附加视图。
但是,当我开始使用 clipsToBounds = YES 时,我的状态栏完全变黑了。我不想要这个。我希望它是 'blue',就像在这个 CBS Sports 应用程序的照片中一样。
如何更改状态栏的颜色,或者为什么我的颜色从导航栏不再延伸到状态栏? [另外,我使用的是嵌入式 NavigationController,而不是我拖到视图上的]
不要将 clipsToBounds
属性 设置为 YES
。扩展栏的工作方式是将图层绘制到其边界之外,直到状态栏下方。
这里有两种选择。一种是使用运行时技巧删除分隔符,我已经在 this answer.
中解释了如何操作
由于你的案例不涉及半透明导航栏,所以会简单很多。您要设置的是 shadowImage
为空,如下所示:
self.navigationController.navigationBar.shadowImage = [UIImage new];
但是您会发现这不会立即起作用。文档中提到,在未使用 setBackgroundImage:
方法之一设置背景图像之前,这将不起作用。由于您的栏不是半透明的并且具有单一颜色,您可以使用该颜色创建一个 1x1px 宽的图像,并将其设置为背景图像。
这里的一个问题是,当您将 clipsToBounds
设置为 true 时,您会丢失状态栏的顶部。因此,我所做的与您所做的正好相反——我让导航栏完全透明:
self.navbar.backgroundColor = UIColor.clearColor()
self.navbar.translucent = true
self.navbar.setBackgroundImage(UIImage(), forBarMetrics:.Default)
self.navbar.clipsToBounds = true
现在我们可以直接通过导航栏看到它后面的内容。所以你可以让你的视图控制器视图的整个顶部区域都是蓝色的,你就可以看到它。
我正在通过 AppDelegate 中的 UINavigationBar 外观代理将 NavigationBar 的半透明 属性 设置为 NO。
然后,为了去掉 UINavigationBar 和我下面的视图之间的 1 像素高度分隔符,在我的 ViewController 中,我设置 self.navigationcontroller.navigationbar.clipsToBounds = YES;
。
这是去掉分隔符,达到类似这样的效果...
UINavigationBar 下方有一个包含日期的附加视图。
但是,当我开始使用 clipsToBounds = YES 时,我的状态栏完全变黑了。我不想要这个。我希望它是 'blue',就像在这个 CBS Sports 应用程序的照片中一样。
如何更改状态栏的颜色,或者为什么我的颜色从导航栏不再延伸到状态栏? [另外,我使用的是嵌入式 NavigationController,而不是我拖到视图上的]
不要将 clipsToBounds
属性 设置为 YES
。扩展栏的工作方式是将图层绘制到其边界之外,直到状态栏下方。
这里有两种选择。一种是使用运行时技巧删除分隔符,我已经在 this answer.
中解释了如何操作由于你的案例不涉及半透明导航栏,所以会简单很多。您要设置的是 shadowImage
为空,如下所示:
self.navigationController.navigationBar.shadowImage = [UIImage new];
但是您会发现这不会立即起作用。文档中提到,在未使用 setBackgroundImage:
方法之一设置背景图像之前,这将不起作用。由于您的栏不是半透明的并且具有单一颜色,您可以使用该颜色创建一个 1x1px 宽的图像,并将其设置为背景图像。
这里的一个问题是,当您将 clipsToBounds
设置为 true 时,您会丢失状态栏的顶部。因此,我所做的与您所做的正好相反——我让导航栏完全透明:
self.navbar.backgroundColor = UIColor.clearColor()
self.navbar.translucent = true
self.navbar.setBackgroundImage(UIImage(), forBarMetrics:.Default)
self.navbar.clipsToBounds = true
现在我们可以直接通过导航栏看到它后面的内容。所以你可以让你的视图控制器视图的整个顶部区域都是蓝色的,你就可以看到它。