美文网首页iOS常用
iOS 判断指定cell 是否离开可视区

iOS 判断指定cell 是否离开可视区

作者: 三岁就很乖 | 来源:发表于2020-08-06 14:10 被阅读0次

在许多情况下,需要判断指定cell是否在可视区域内,但是没有系统的方法来直接判断。
只能通过获得cell的fram,通过计算来判断。

// 指定cell的row
NSString *index = [[NSUserDefaults standardUserDefaults] objectForKey:VoiceIndex];

// 指定cell的indexpath
NSUInteger newIndex[] = {0, [index integerValue]};
NSIndexPath *newPath = [[NSIndexPath alloc] initWithIndexes:newIndex length:2];

if (newPath != nil) {
     // 获得 指定cell的fram
    CGRect cellrect =  [_tableView rectForRowAtIndexPath:newPath];
    // tableview滑动距离 - cell的fram 的绝对值 与 tableview的高度对比
    if (fabs(_tableView.contentOffset.y - cellrect.origin.y) > _tableView.size.height ) {
        // 不在可视区范围内
           .......
     } else {
        // 在可视区范围内
           .......
    }
}
1.标记要操作的cell 的NSIndexPath
NSIndexPath * optionIndexPath;

scrollViewDidScroll 里判断
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

if (optionIndexPath != nil) {
  //标记的cell  在tableView中的坐标值
    CGRect  recttIntableview = [_demoTable rectForRowAtIndexPath:optionIndexPath];
    //当前cell在屏幕中的坐标值
    CGRect rectInSuperView = [_demoTable convertRect:recttIntableview toView:[_demoTable superview]];
    
    //滑动到了屏幕下方
    if ( rectInSuperView.origin.y > self.view.frame.size.height) {
        // 对已经移出屏幕的 Cell 做相应的处理
       

    }else if (rectInSuperView.origin.y + rectInSuperView.size.height < 0){
        //当前操作的cell高度  rectInSuperView.size.heigt
        //滑动到了屏幕上方
       
        
    }else{
       
    }
}

相关文章

网友评论

    本文标题:iOS 判断指定cell 是否离开可视区

    本文链接:https://www.haomeiwen.com/subject/htizrktx.html