动态增加tableCell的高度

时间:2013-01-10 08:43:04

标签: iphone ios uitableview

我搜索了表格单元格的增加高度。我收到的答案很少。那些不适合我的病情。

案例:

我有表格单元格,其高度默认为150.表格单元格中添加的内容(Titile,Image,action)在表格单元格中查看。我们通过&#34; UIImageView + AFNetworking.h加载图像&#34; < / b>。我们有不同高度的图像。

如何在单元格中加载图像后增加/减少单元格高度?

5 个答案:

答案 0 :(得分:1)

为此,您必须重新加载特定的单元格

// Build the index path
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:3 inSection:2];
// Add them in an index path array
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, nil];
// Launch reload for the two index path
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];

并且必须从tableView: heightForRowAtIndexPath:返回单元格的高度,然后它会调用tableView: cellForRowAtIndexPath:

P.S。我假设您正在进行延迟加载(在创建单元格后加载图像)

答案 1 :(得分:0)

在tableview cellForRowAtIndexPath中加载图像后,计算加载图像的高度。在heightForRowAtIndexPath中给出rowheight。

试用此代码

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UIImage *Image= [imageAry objectAtIndex:indexPath.row];
    NSLog(@"%f",Image.frame.size.height);
    return size.height + 10;
}

答案 2 :(得分:0)

使用heightForRowAtIndexPath:委托方法设置单元格的高度,如下方...

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    UIImage *Tempimage= [yourArray objectAtIndex:indexPath.row];
    UIImageView *imgTemp = [[UIImageView alloc]initWithImage:Tempimage];
    return imgTemp.frame.size.height;
}

答案 3 :(得分:0)

我没有使用UIImageView+AFNetworking.h,但计算行高的想法是在加载一些地方后计算图像的高度

希望这种方法可以帮助你

- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest 
              placeholderImage:(UIImage *)placeholderImage 
                       success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
                       failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;

并在success中加载图片后计算图像高度image.size.height并将其添加到表格的数组中

NSMutableDictionary *record = [array objectAtIndex:index];
[record setObject:[NSString stringWithFormat:@"%f",image.size.height] forKey:@"imageheight"];
[array  replaceObjectAtIndex:index withObject:record];
[tableView reloadData];

并像这样设置行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    NSMutableDictionary *record = [array objectAtIndex:index];
    if ( [record objectForkey:@"imageheight"] ) {
        return [[record objectForkey:@"imageheight"] floatValue] + yourmargin);
        // yourmargin may be 150 or what ever be
    } else {
        return 150;
    }
}

答案 4 :(得分:0)

下载图像后写下面的行:

[self.tblStoryCardView beginUpdates]; [self.tblStoryCardView endUpdates];

并以行高法下载图像高度。

我在github上传了一个虚拟项目。你可以检查一下: https://github.com/govindprasadguptacool/Dynamic-Table-Cell-Height