一个iOS tableView 滚动标题联动效果的实现

效果图

请添加图片描述

情景

tableview 是从屏幕顶部开始的,现在有导航栏,和栏目标题视图将tableView的顶部覆盖了

分析

我们为了达到滚动到某个分区选中标题的效果,就得知道
展示最顶部的cell或者区头在哪个分区范围内

所以我们必须首先获取顶部的位置

由于一个tableView 本身最顶部(屏幕顶部,被导航栏盖住的地方)的位置的origin.y = tableView.cotentoffset.y

所以,能够展示出来的顶端的位置就是

origin.y + 导航栏高度 + 栏目视图高度

我们可以通过 tableView 的 rectForSection 接口获取
每一个分区的rect范围
,通过遍历判断当前的顶端位置在
哪个分区内,就可以获取当前要选中某个标题

代码

 //tableView在屏幕顶端的位置的origin 
  CGFloat origin = self.tableView.contentOffset.y;
  //栏目视图高度
   origin += 52 * PLUS_SCALE;
   //导航栏高度
   origin += SafeAreaTopHeight; 
    NSIndexPath *indexPath;
    for (int i = 0; i < self.tableView.numberOfSections; i ++) {
        CGRect rect = [self.tableView rectForSection:i];
        if (CGRectGetMinY(rect) < origin && CGRectGetMaxY(rect) > origin) {
            indexPath = [NSIndexPath indexPathForRow:0 inSection:i];
            break;
        }
    }

 //然后选中某个标题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值