UITableview header 如果向上滚动则不会再次显示
UITableview header not shown again if scrolled up
我有 UITableview Controller,它在 header 中有搜索栏。当我向上滚动 table 视图时,它反弹了。但是搜索栏隐藏了。当我向下滚动时,会显示搜索栏。谁能告诉我如何再次显示搜索栏?
我试过以下代码,但运行不流畅:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 40;//Change as per your table header hight
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
//scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
CGPoint newOffset = CGPointMake(0, -[self.tableView contentInset].top);
[self.tableView setContentOffset:newOffset animated:YES];
}
}
这是滚动前的屏幕截图:
这是错误的视图,滚动后:
试试这个代码
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat sectionHeaderHeight = 40;
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}
else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
但你的问题是,你的 tableview header 不是 40,它是 35 或 25,这意味着你的 tableview 无法为插图设置正确的数字,请尝试更改 40 以更正 header身高。
如何禁用动画并像这样放置自定义动画:
还请确保使用 MACro 具有相同的 sectionHeader 高度。我仍然怀疑你的评论说 35 或 25。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 40;//Change as per your table header hight
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
[UIView animateWithDuration: 1.0
animations: ^{
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}completion: ^(BOOL finished){
}
];
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
CGPoint newOffset = CGPointMake(0, -[self.tableView contentInset].top);
[UIView animateWithDuration: 1.0
animations: ^{
[self.tableView setContentOffset:newOffset animated:NO];
}completion: ^(BOOL finished){
}
];
}
}
我有 UITableview Controller,它在 header 中有搜索栏。当我向上滚动 table 视图时,它反弹了。但是搜索栏隐藏了。当我向下滚动时,会显示搜索栏。谁能告诉我如何再次显示搜索栏?
我试过以下代码,但运行不流畅:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 40;//Change as per your table header hight
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
//scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
CGPoint newOffset = CGPointMake(0, -[self.tableView contentInset].top);
[self.tableView setContentOffset:newOffset animated:YES];
}
}
这是滚动前的屏幕截图:
这是错误的视图,滚动后:
试试这个代码
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat sectionHeaderHeight = 40;
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}
else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
但你的问题是,你的 tableview header 不是 40,它是 35 或 25,这意味着你的 tableview 无法为插图设置正确的数字,请尝试更改 40 以更正 header身高。
如何禁用动画并像这样放置自定义动画:
还请确保使用 MACro 具有相同的 sectionHeader 高度。我仍然怀疑你的评论说 35 或 25。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 40;//Change as per your table header hight
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
[UIView animateWithDuration: 1.0
animations: ^{
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}completion: ^(BOOL finished){
}
];
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
CGPoint newOffset = CGPointMake(0, -[self.tableView contentInset].top);
[UIView animateWithDuration: 1.0
animations: ^{
[self.tableView setContentOffset:newOffset animated:NO];
}completion: ^(BOOL finished){
}
];
}
}