Добавьте это к вашему View Controller:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.layer.masksToBounds = false
self.navigationController?.navigationBar.layer.shadowColor = UIColor.lightGray.cgColor
self.navigationController?.navigationBar.layer.shadowOpacity = 0
self.navigationController?.navigationBar.layer.shadowOffset = CGSize(width: 0, height: 2.0)
self.navigationController?.navigationBar.layer.shadowRadius = 2
}
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
self.navigationController?.navigationBar.layer.shadowOpacity = 0.8
}
Если вы хотите удалить тень, когда прокрутка остановится, вы можете сбросить значения до нормальных в этом методе:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
self.navigationController?.navigationBar.layer.shadowOpacity = 0
}
Возможно, вы захотите сделать то же самое, когда пользователь перетаскивает TableView вместо прокрутки, в этом случае также добавьте эти два:
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
self.navigationController?.navigationBar.layer.shadowOpacity = 0.8
}
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
self.navigationController?.navigationBar.layer.shadowOpacity = 0
}