我在一些uitableview行中有gif动画图片,
当tableview中有很多GIF时,CPU使用率会非常高,
所以当他们的行不可见时我想隐藏这些GIF,
我该怎么做?
如何实现不可见的单元格行的indexPath?
之后我可以隐藏这样的gif:
UITableViewCell *celll = [ tableView cellForRowAtIndexPath:indexPath];
UIImageView *gif = (UIImageView*)[celll viewWithTag:30000];
gif.hidden = TRUE;
所以我必须在循环中获得不可见的单元indexPath。
答案 0 :(得分:1)
通常,只要您正确使用可重复使用的细胞,您就不需要这样做
不过,如果您确实想这样做,可以在tableView:didEndDisplayingCell:forRowAtIndexPath:
上使用UITableViewDelegate
方法:
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath {
UIImageView *gif = (UIImageView*)[celll viewWithTag:30000];
gif.hidden = YES;
}
答案 1 :(得分:0)
如果您将该行:
NSLog(@"%@",indexPath);
作为方法的第一行:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
您会意识到它已自动完成。只有可见的单元格,即屏幕上显示的单元格,才能显示数据。
答案 2 :(得分:0)
对不起英文不好。你还没有发布有关你的cellForRowAtIndexPath实现方式的代码,我建议将你的cellForRowAtIndexPath改为如下所示。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"YOURIDENTIFIERSTRING";
UITableViewCell *cell = [tableView dequeReusableCellWithIdentifier: CellIdentifier forIndexPath:indexPath];
// Configure the cell here …
return cell;
}
这种方式只会创建在设备上可见的那些单元格,一旦行退出设备视图,它将重新用于新行。请检查apple doc for tableview。