我想为 iOS 状态栏获取特定的颜色,我知道它将采用顶视图控制器视图的颜色。因此我可以通过将状态栏所需的颜色应用于表格视图来获得它,它看起来像这样
但是当它没有任何行时,整个表格视图就会得到那种颜色(很明显!但这不是我想要的)
有没有办法只给表格视图的顶部提供颜色,以便状态栏获得该颜色,或者我可以单独更改状态栏颜色。我有
查看基于控制器的状态栏外观
在 Info.plist 中为 NO 。
我想为 iOS 状态栏获取特定的颜色,我知道它将采用顶视图控制器视图的颜色。因此我可以通过将状态栏所需的颜色应用于表格视图来获得它,它看起来像这样
但是当它没有任何行时,整个表格视图就会得到那种颜色(很明显!但这不是我想要的)
有没有办法只给表格视图的顶部提供颜色,以便状态栏获得该颜色,或者我可以单独更改状态栏颜色。我有
查看基于控制器的状态栏外观
在 Info.plist 中为 NO 。
您可以将背景颜色应用于状态栏,如下所示
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
statusBar.backgroundColor = [UIColor redColor];
}
在 AppDelegatedidFinishLaunchingWithOptions
方法中使用上面的代码会改变整个应用程序的状态栏背景颜色。如果您想将背景颜色更改为特定的视图控制器,那么您应该遵循该@Lion's
方法。
希望这可以帮助。
您应该使用一个自定义视图代替状态栏,并为该视图提供背景颜色。并将您的表格视图放在此自定义视图下方,这样您就不需要在表格视图的上部设置颜色!
视图的高度应为 20,宽度应等于屏幕宽度。
和位置应该是(0,0)。
希望这会有所帮助:)
您还可以将一个窗口添加到顶部状态栏并更改其颜色。它看起来像这样:
// AppDelegate.Swift
let topWindow = UIWindow(frame: CGRect(....))
topWindow.backgroundColor = ...
window.addSubview(topWindow)
在斯威夫特上:
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()
}
}