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