Changing only the body colour of UITableView or changing only the status bar colour

不羁岁月 提交于 2020-01-06 23:50:33

问题


I wanted to get a specific colour to the iOS status bar ,I understand it will take the colour of the top view controllers view . And hence I can get this by applying the colour I want for the status bar to the table view ,which would look like this

But when it doesn't have any rows then whole table view gets that color (Obvious! but thats not what i want)

Is there any way to give colour only to the top part of the tableview so that status bar gets that colour or can i change the status bar color alone . I have

View controller-based status bar appearance

in Info.plist as NO .


回答1:


You can apply background color to status bar like following

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

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

Using the above code in AppDelegate didFinishLaunchingWithOptions method would change the status bar background color of entire app. If you want to change the background color to specific view controllers, then you should follow the @Lion's approach.

Hope this helps.




回答2:


you should take one custom view in place of status bar and give background color to that view. and take your tableview just below this custom view so you not need to set color on tableview's upper part!!

View's height should be 20 and width should equal to screen width.

and position should be (0,0).

Hope this will help :)




回答3:


You can also add one window to top status bar and change its color. It will look like this:

// AppDelegate.Swift
let topWindow = UIWindow(frame: CGRect(....))
topWindow.backgroundColor = ...
window.addSubview(topWindow)



回答4:


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

}


来源:https://stackoverflow.com/questions/37155006/changing-only-the-body-colour-of-uitableview-or-changing-only-the-status-bar-col

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!