Я хотел бы реализовать панель инструментов, аналогичную той, что есть в Airbnb-App.Я попытался использовать панель инструментов, которая поставляется с панелью навигации, но она вообще не отображается, и когда я попробовал пользовательскую панель инструментов, я не знаю, как ее анимировать, как в Airbnb-App.На данный момент это выглядит так:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0 {
UIView.animate(withDuration: 0.2, animations: {
self.toolBar.frame = CGRect(x: 0, y: 20, width: UIScreen.main.bounds.width, height: 44)
self.eventCollectionView.frame = CGRect(x: 0, y: 64, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - 64)
})
} else {
UIView.animate(withDuration: 0.2, animations: {
self.toolBar.frame = CGRect(x: 0, y: 64, width: UIScreen.main.bounds.width, height: 44)
self.eventCollectionView.frame = CGRect(x: 0, y: 108, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - 108)
})
}
}
Что происходит, так как панели инструментов требуется 0,2 секунды, чтобы скрыться и показать.Также за эти 0,2 секунды мой collectionView движется вверх (заполняет пространство, где находилась панель инструментов).Я хочу изменить три вещи:
В течение 0,2 секунд я больше не могу прокручивать.Анимация должна закончиться, чтобы я мог снова прокрутить.Я хотел бы иметь возможность прокручивать в любое время, даже внутри анимации.
В приложении Airbnb панель инструментов перемещается «с фоном».Я имею в виду, что при перетаскивании вверх / вниз панель инструментов показывает / скрывает скорость, с которой вы перетаскиваете вид вверх / вниз.
Когда я перестаю касаться экрана, он будет скрыт/ показать полностью, в зависимости от его положения (или в зависимости от того, какая часть панели инструментов видна).
Здесь я получил короткую демонстрацию приложения: https://im2.ezgif.com/tmp/ezgif-2-90a3f5371114.gif