仅更改UITableView的正文颜色或仅更改状态栏颜色

时间:2016-05-11 06:46:49

标签: ios swift uitableview ios7-statusbar

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

enter image description here

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

enter image description here

有没有办法只将颜色赋予tableview的顶部,以便状态栏获得该颜色,或者我可以单独更改状态栏颜色。 我有

  

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

在Info.plist中为NO。

4 个答案:

答案 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()
}

}