我搜索了表格单元格的增加高度。我得到的答案很少。这些不适合我的情况。
案子:
我有高度默认为 150 的表格单元格。在表格单元格(标题、图像、操作)上添加的内容是表格单元格中的视图。我们通过"UIImageView+AFNetworking.h"加载图像。我们有不同高度的图像。
如何在单元格中加载图像后增加/减少单元格高度?
我搜索了表格单元格的增加高度。我得到的答案很少。这些不适合我的情况。
案子:
我有高度默认为 150 的表格单元格。在表格单元格(标题、图像、操作)上添加的内容是表格单元格中的视图。我们通过"UIImageView+AFNetworking.h"加载图像。我们有不同高度的图像。
如何在单元格中加载图像后增加/减少单元格高度?
为此,您必须重新加载特定的单元格
// 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:
PS我假设您正在执行延迟加载(在创建单元格后加载图像)
在 tableview中加载图像后,cellForRowAtIndexPath
计算加载图像的高度。给出行高heightForRowAtIndexPath
。
试试这个代码
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *Image= [imageAry objectAtIndex:indexPath.row];
NSLog(@"%f",Image.frame.size.height);
return size.height + 10;
}
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;
}
我没有使用,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;
}
}
下载图像后写入以下行:
[self.tblStoryCardView beginUpdates]; [self.tblStoryCardView endUpdates];
并以行高方法下载图像高度。
我在 github 上传了一个虚拟项目。你可以检查一下: https ://github.com/govindprasadguptacool/Dynamic-Table-Cell-Height