0

我想为 iOS 状态栏获取特定的颜色,我知道它将采用顶视图控制器视图的颜色。因此我可以通过将状态栏所需的颜色应用于表格视图来获得它,它看起来像这样

在此处输入图像描述

但是当它没有任何行时,整个表格视图就会得到那种颜色(很明显!但这不是我想要的)

在此处输入图像描述

有没有办法只给表格视图的顶部提供颜色,以便状态栏获得该颜色,或者我可以单独更改状态栏颜色。我有

查看基于控制器的状态栏外观

在 Info.plist 中为 NO 。

4

4 回答 4

1

您可以将背景颜色应用于状态栏,如下所示

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor redColor];
}

在 AppDelegatedidFinishLaunchingWithOptions方法中使用上面的代码会改变整个应用程序的状态栏背景颜色。如果您想将背景颜色更改为特定的视图控制器,那么您应该遵循该@Lion's方法。

希望这可以帮助。

于 2016-05-11T07:04:01.893 回答
1

您应该使用一个自定义视图代替状态栏,并为该视图提供背景颜色。并将您的表格视图放在此自定义视图下方,这样您就不需要在表格视图的上部设置颜色!

视图的高度应为 20,宽度应等于屏幕宽度。

和位置应该是(0,0)。

希望这会有所帮助:)

于 2016-05-11T06:51:27.673 回答
0

您还可以将一个窗口添加到顶部状态栏并更改其颜色。它看起来像这样:

// AppDelegate.Swift
let topWindow = UIWindow(frame: CGRect(....))
topWindow.backgroundColor = ...
window.addSubview(topWindow)
于 2016-05-11T07:18:00.957 回答
0

在斯威夫特上:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden =  true

UIApplication.sharedApplication().statusBarHidden = false
UIApplication.sharedApplication().statusBarStyle = .LightContent

let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
if statusBar.respondsToSelector("setBackgroundColor:") {
    statusBar.backgroundColor = UIColor.redColor()
}

}
于 2016-05-12T05:34:00.703 回答