iOS8: How do I make statusBar opaque after navigat

2019-04-06 00:22发布

问题:

I am building iOS8 app. On my tableview controller, I am using self.navigationController.hidesBarsOnSwipe = YES, to hide the navigationBar on swipe up gesture. It is working nicely, but my statusBar becomes transparent and shows the table content underneath.

On storyboard, Status Bar are Top Bar are set to "Inferred"

I want to: 1. Keep my status bar opaque 2. Maintain the same color as the navigationBar 3. Table content scrolls underneath the statusBar

Thank you.

回答1:

Here is a Swift solution:

First, change UITableViewController to UIViewController and add a tableView field. Then, implement your viewDidLoad method as follows:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
    tableView.frame = view.frame
    view.addSubview(tableView)

    let topBar = UIView(frame: UIApplication.sharedApplication().statusBarFrame)
    topBar.backgroundColor = myDesiredColor
    view.addSubview(topBar)
}


回答2:

You can add a constraint to the top layout, by this scrolling content will not appear below the status bar.



回答3:

Make a custom View.

UIView * statusBarView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 20)];
statusBarView.backgroundColor=[UIColor whiteColor];
[self.view addSubview:statusBarView];