如何在滚动时隐藏并显示带有动画效果的标题视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在滚动时隐藏并显示带有动画效果的标题视图相关的知识,希望对你有一定的参考价值。
我正在尝试实现隐藏,并在滚动集合视图时显示像facebook这样的慢动画的标题视图。
图片 :
我的代码:
if (currentContentOffset > self.previousContentOffset) {
heightConstraintView.constant = 0;
HeaderView.hidden = YES;
} else if (currentContentOffset < self.previousContentOffset) {
heightConstraintView.constant = 57;
HeaderView.hidden = NO;
}
答案
您可以使用UIView
原生动画方法。请注意self.view.layoutIfNeeded
是必要的。同样取消隐藏您的观点
heightConstraintView.constant = 57;
UIView.animate(withDuration: 0.25, animations: {
HeaderView.hidden = NO;
self.view.layoutIfNeeded()
})
另一答案
如果你正在使用collectionView,那么我建议使用像View这样的导航栏作为collectionView本身的headerView,这是我如何做的,当我使用需要完成类似的东西时:
使用委托方法:
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if section != 0 {
return pageControl.numberOfPages
}
return 0 //so no cells are displayed for this header, remember to do the same for sizeForItemAtIndex and CellForItemAtIndex too
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if indexPath.section == 0{
//add your custom navigation bar like View here
}
return UICollectionReusableView()
}
在这种方法中,滚动时标题视图的动画将由集合视图本身处理,并且只有在您向上移动时才会再次显示。
另一答案
如果你使用navigationBar
,很容易实现。 ios为UINavigationController
提供了一个掩盖一些复杂行为的简单属性。如果你为任何hidesBarsOnSwipe
设置true
为UINavigationController
,那么iOS会自动为你的视图添加一个轻击手势识别器,以根据需要处理隐藏(和显示)导航栏。这意味着您可以在viewDidAppear
中的一行代码中模仿Safari的导航栏行为,如下所示:
self.navigationController?.hidesBarsOnTap = true
以上是关于如何在滚动时隐藏并显示带有动画效果的标题视图的主要内容,如果未能解决你的问题,请参考以下文章