为了账号安全,请及时绑定邮箱和手机立即绑定

更改UITableView节标题的默认滚动行为

更改UITableView节标题的默认滚动行为

iOS
aluckdog 2019-11-22 14:12:39
我有两个部分的UITableView。这是一个简单的表格视图。我正在使用viewForHeaderInSection为这些标题创建自定义视图。到目前为止,一切都很好。默认的滚动行为是,遇到一个节时,节标题保持锚定在导航栏下方,直到下一个节滚动到视图中为止。我的问题是:我可以更改默认行为,以使节标题不停留在顶部,而是在导航栏下滚动浏览节的其余部分吗?我缺少明显的东西吗?谢谢。
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我解决此问题的方法是contentOffset根据(extends )contentInset中的来调整,如下所示:UITableViewControllerDelegateUIScrollViewDelegate


- (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);

   }

}

唯一的问题是,滚动回顶部时,它会松动一些反弹。


{注意:“ 40”应为您的第0部分标题的确切高度。如果使用的数字大于第0部分标题的高度,您会发现手指感觉受到了影响(尝试使用“ 1000”,并且您会看到顶部的弹跳行为很奇怪)。如果数字与您的第0部分标题高度匹配,则手指感觉似乎是完美的或接近完美。}


查看完整回答
反对 回复 2019-11-22
?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果是我这样做,我将利用一个事实,即Plain风格的UITableViews具有粘性标头,而Grouped风格的UITableViews没有标头。我可能至少会尝试使用自定义表格单元格来模拟分组表格中普通单元格的外观。


我实际上没有尝试过,因此可能无法正常工作,但这就是我建议的做法。


查看完整回答
反对 回复 2019-11-22
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我知道来晚了,但是我找到了最终的解决方案!


您要执行的操作是,如果有10个节,则让dataSource返回20。节标题使用偶数,节内容使用奇数。像这样的东西


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    if (section%2 == 0) {

        return 0;

    }else {

        return 5;

    }

}


-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    if (section%2 == 0) {

        return [NSString stringWithFormat:@"%i", section+1];

    }else {

        return nil;

    }

}


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 464 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信