在许多情况下,需要判断指定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{
}
}
网友评论