Проблема в том, что при скольжении назад панель навигации не отображается в предыдущем представлении, поэтому Я устанавливаю альфа обратно на единицу в viewWillDissapear (которая работает не лучшим образом, как показано на рисунке).
Что касается кнопки «Назад», если вы измените альфа навигации Бар также влияет на кнопку «Назад». У Apple есть другая кнопка «Назад» (круг со стрелкой), когда панель навигации не видна, и эта кнопка исчезает с анимацией, когда появляется панель навигации и появляется кнопка «Назад» по умолчанию. Я не уверен, что они просто накладывают новый.
Этот вопрос задавался раньше, но принятый ответ заключался в том, чтобы сделать панель навигации прозрачной, а затем менять ее непрозрачность при прокрутке. . Это не создает тот же эффект, поскольку панель навигации по умолчанию не белая, а полупрозрачная, и вы также теряете линию границы внизу.
Swift 5
Код: Выделить всё
override func viewWillDisappear(_ animated: Bool) {
navigationController?.navigationBar.alpha = 1
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentVerticalOffset = scrollView.contentOffset.y
var percentageVerticalOffset = CGFloat() //currentVerticalOffset / maximumVerticalOffset
if currentVerticalOffset > collectionView.frame.size.height {
percentageVerticalOffset = currentVerticalOffset / currentVerticalOffset
self.title = "The Barn Owl"
//self.navigationItem.setHidesBackButton(false, animated: true)
} else {
percentageVerticalOffset = currentVerticalOffset / collectionView.frame.size.height
//self.navigationItem.setHidesBackButton(true, animated: true)
self.title = ""
}
// let color = UIColor.init(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: percentageVerticalOffset)
// navigationController?.navigationBar.backgroundColor = color
navigationController?.navigationBar.alpha = percentageVerticalOffset
}


Подробнее здесь: https://stackoverflow.com/questions/695 ... gation-bar
Мобильная версия