我正在使用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()
}