我有一个自定义导航栏,我试图在滚动时隐藏它并在滚动停止时显示它。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.navigationBView.hidden = YES;
self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
self.navigationBView.hidden = NO;
self.bTableView.frame = CGRectMake(0, CGRectGetHeight(self.navigationBView.frame), CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame) - CGRectGetHeight(self.navigationBView.frame));
}
但问题是我还使用了 UIRefreshControl
来进行拉动刷新方法。当我尝试拖动 tableView 进行刷新时,它会调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
并隐藏导航栏。有没有一种方法可以检查用户是否从屏幕顶部(即从第一个表格单元格)下拉?
我试过
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y != 0)
{
self.navigationBView.hidden = YES;
self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
}
}
但是当用户向下滚动减慢时,这不会隐藏导航栏。有什么办法可以解决这个问题吗?
最佳答案
只需在 scrollViewWillBeginDragging
中将条件 !=
更改为 >=
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y >= 0)
{
self.navigationBView.hidden = YES;
self.bTableView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
}
}
关于iOS:滚动表格 View 时隐藏和显示自定义导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285912/