我想实现一个类似于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