Я использовал HidingNavigationBarManager , чтобы сделать то, что вы только что описали
и это очень просто в использовании. Если у вас есть tableView в вашем ViewController, то
это так же просто, как добавить эти строки в ваш код.
var hidingNavBarManager: HidingNavigationBarManager?
...
...
override func viewDidLoad() {
super.viewDidLoad()
self.hidingNavBarManager = HidingNavigationBarManager(viewController: self, scrollView: tableView)
}