根据图像问题的UITableview单元格高度

时间:2017-02-23 10:34:47

标签: ios objective-c uitableview uiimageview

我根据UIImageView高度做UITableview单元格高度(动态高度),目前它正常工作但我的问题是如果我快速滚动,UITableview不能平滑滚动或无法正常工作

我认为问题是我正在重新加载tableview单元格中的行,因此tableview滚动无效,任何人都可以告诉我对此问题的任何好建议吗?

我在这里做了什么

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// Create the cell...

[cell.myImageView setImageWithURL:[NSURL URLWithString:@"http://example.com/image.jpg"]
          placeholderImage:[UIImage imageNamed:@"placeholder"]
                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
    if (image != nil) {
        [self.images insertObject:image atIndex:indexPath.row];
        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:YES];
    }
}];
return cell;
}

根据图像设置高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
id image = [self.images objectAtIndex:indexPath.row];
if ([image isKindOfClass:[NSNull class]]) {
    return defaultHeight;
} else {
    return [image size].height + topPadding + bottomPadding;
}
}

1 个答案:

答案 0 :(得分:-2)

试试这个

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
            UIImage *image = [self.images objectAtIndex: indexPath.row];
            if (image) {
                return image.size.height + 5;
            }
            else {
                return 80.0; //default value......
            }
        }