UINavigationBar заменить на пользовательский вид - PullRequest
0 голосов
/ 03 марта 2019

Я использую UITableViewController, встроенный в UINavigationController.Моя цель - настроить панель навигации, а также увеличить ее высоту.Однако, кажется невозможным увеличить высоту UINavigationBar, управляемого UINavigationController.Я читал, что некоторым людям удалось скрыть UINavigationBar и заменить его пользовательским UIView, который выглядит как UINavigationBar.Мой вопрос заключается в том, как мне добиться этого и имитировать функциональность UINavigationBar, который автоматически вставляет UITableView при прокрутке?Я пробовал это, но не уверен, что это правильно и не сломается в будущих версиях iOS.И табличное представление не прокручивается автоматически в ответ на изменение в 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()
}
...