UITableView/UICollectionView获取特定位置的cell 主要依赖于各自对象提供的的api方法,应用示例如下:
1 | // returns nil if point is outside of any row in the table |
一、tableView双级联动
以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的indexPath。
方案一(不推荐原因会在后面提到):获得当前可见的所有cell,然后取可见cell数组中的第一个cell就是目标cell,再根据cell获得indexPath。代码如下
1 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ |
方案二(推荐使用):利用偏移量!偏移量的值实际上可以代表当时处于tableView顶部的cell在tableView上的相对位置, 那么我们就可以根据偏移量获得处于顶部的cell的indexPath。代码如下
1 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ |
二、 获取处于UITableView中心的cell
获取处于tableView中间cell的效果,用上述方案一比较麻烦:要考虑可见cell 的奇、偶个数问题,还有cell是否等高的情况;方案二用起来就快捷方便多了,取的cell的位置的纵坐标相当于在偏移量的基础上又增加了tableView高度的一半。代码如下:
1 | - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ |
需要示例Demo的话请移驾我的Github→UITableViewLinkage
俺目前能想到的也就这了,各位同僚有什么好的想法欢迎在此留言交流😀😁😀👏👏👏
更新于2018/9/7 :UICollectionView获取特定位置的item与UITableView相似,仅仅是获取的方法名不同,如下:
1 | NSIndexPath * indexPath = [_collectionView indexPathForItemAtPoint:scrollView.contentOffset]; |
获取某个cell在当前tableView/collectionView上的坐标位置
1 | //获取某个cell在当前tableView上的坐标位置 |