美文网首页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