我在尝试实现隐藏并在滚动收藏视图时显示像facebook这样的慢动画的标题视图。
图片:
我的代码:
if (currentContentOffset > self.previousContentOffset) {
heightConstraintView.constant = 0;
HeaderView.hidden = YES;
} else if (currentContentOffset < self.previousContentOffset) {
heightConstraintView.constant = 57;
HeaderView.hidden = NO;
}
答案 0 :(得分:1)
您可以使用UIView
原生动画方法。请注意self.view.layoutIfNeeded
是必要的。对取消隐藏您的观点
heightConstraintView.constant = 57;
UIView.animate(withDuration: 0.25, animations: {
HeaderView.hidden = NO;
self.view.layoutIfNeeded()
})
答案 1 :(得分:0)
如果你正在使用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()
}
在这种方法中,滚动时标题视图的动画将由集合视图本身处理,并且只有在您向上移动时才会再次显示。
答案 2 :(得分:0)
如果您使用navigationBar
,则很容易实现。 iOS为UINavigationController
提供了一个掩盖一些复杂行为的简单属性。如果您为任何hidesBarsOnSwipe
设置true
为UINavigationController
,则iOS会自动为您的视图添加点按手势识别器,以根据需要处理隐藏(并显示)导航栏。这意味着您可以在viewDidAppear
中的一行代码中模仿Safari的导航栏行为,如下所示:
self.navigationController?.hidesBarsOnTap = true