在UITableViewController中滚动几个项目,使该单元格出现在我的UIStatusBar后面。我尝试使用此方法来解决:

var bounds = self.view.bounds
    bounds.origin.y -= 20.0;
    self.view.bounds = bounds
    // Create a solid color background for the status bar



    let statusFrame = CGRect(x: 0, y: -20, width: bounds.size.width, height: 20)
    let statusBar = UIView(frame: statusFrame)
    statusBar.backgroundColor = UIColor.red
    self.view.addSubview(statusBar)


在滚动之前,这会给我一个红色的条。经过一点滚动后,它消失了。我还尝试将tableView的contentInset设置为UIApplication.shared.statusBarFrame.height,但是做了同样的事情。

保持导航栏很重要。而且我的TableViewController嵌入在UINavigationController

有任何想法吗?

最佳答案

一种方法是重构UITableViewController并将其制成UITableView并在状态栏下方添加顶部约束。

另一种是更改状态栏颜色,例如:

func setStatusBarBackgroundColor(color: UIColor) {
    if let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView {
        statusBar.backgroundColor = color
    }
}


但是要小心,因为它是私有API。您的应用可能会被拒绝。

关于ios - UITableViewController和UIStatusbar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39699404/

10-12 06:52