UINavigationBar替换为自定义视图

时间:2019-03-03 11:46:42

标签: ios user-interface uiview uinavigationcontroller uikit

我正在使用UINavigationController中嵌入的UITableViewController。我的目标是自定义导航栏并增加其高度。但是,似乎不可能增加由UINavigationController管理的UINavigationBar的高度。我读到有人设法隐藏UINavigationBar并将其替换为类似于UINavigationBar的自定义UIView。我的问题是我该如何实现并模仿UINavigationBar的功能,该功能会在滚动时自动插入UITableView?我尝试了此操作,但不确定它是否正确,并且在将来的iOS版本中不会中断。并且tableview不会根据contentInset的变化自动向下滚动,为什么?

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    var frame = self.navigationController!.navigationBar.bounds
    frame = CGRect(x: frame.origin.x, y: frame.origin.y, width: frame.width, height: frame.height + 15)
    self.navigationController?.setNavigationBarHidden(true, animated: false)

    let navView = UIView()
    navView.backgroundColor = UIColor.green
    navView.frame = frame

    self.navigationController!.view.addSubview(navView)

    tableView.contentInset = UIEdgeInsets(top: frame.height, left: 0, bottom: 0, right: 0)
    tableView.reloadData()
}

0 个答案:

没有答案