如何set
dynamic height
image
和cell
UITableView Autoresizing
UI
。我在Storyboard
中使用了var co_nameValue = $("#id_emp_coname").val()
alert(co_nameValue );
的自动调整大小。而且我从Web服务获得具有静态宽度和图像动态高度的图像,如Facebook。任何人都可以帮我设置图像和单元格的动态高度。
答案 0 :(得分:1)
您可以使用此方法动态更改tableviewcell的高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
UIImage *img = [UIImage imageNamed:@"yourImage"];
return img.size.height;
}
在下载后使用imageurl,使用下面的代码来更新身高
UIImage *img=[UIImage imageWithData:data];
[self.tableView beginUpdates]; [self.tableView endUpdates];
答案 1 :(得分:0)
您需要实施UITableViewDelegate
和UITableViewDataSource
方法来执行此操作,并且还需要为每个单元格计算heightForRowAtIndexPath
(UITableViewDelegate
方法)中单元格的高度
答案 2 :(得分:0)
您可以使用此方法
提供UITableViewCell的动态高度-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return yourvalue;
}
答案 3 :(得分:0)
- (void)setDefaultRowHeights
{
self.imageHeights = [NSMutableArray arrayWithCapacity:self.imageURLs.count];
for (int i = 0; i < self.imageURLs.count; i++) {
self.imageHeights[i] = @(self.tableView.rowHeight);
}
}
- (void)setDefaultRowHeights {
self.imageHeights = [NSMutableArray arrayWithCapacity:self.imageURLs.count];
for (int i = 0; i < self.imageURLs.count; i++) {
self.imageHeights[i] = @(self.tableView.rowHeight);
}
}
然后,让我们转到tableView:cellForRowAtIndexPath:我们在哪里下载图像并将它们的高度存储在我们的imageHeights数组中(这是一个很长的,但不要惊慌失措)。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
DynamicTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DynamicCell" forIndexPath:indexPath];
NSString *imageURL = self.imageURLs[indexPath.row];
__weak DynamicTableViewCell *weakCell = cell;
__weak typeof(self) weakSelf = self;
[cell.mainImageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]]
placeholderImage:[UIImage new]
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
weakCell.mainImageView.image = image;
// Update table row heights
NSInteger oldHeight = [weakSelf.imageHeights[indexPath.row] integerValue];
NSInteger newHeight = (int)image.size.height;
// If image is wider than our imageView, calculate the max height possible
if (image.size.width > CGRectGetWidth(weakCell.mainImageView.bounds)) {
CGFloat ratio = image.size.height / image.size.width;
newHeight = CGRectGetWidth(self.view.bounds) * ratio;
}
// Update table row height if image is in different size
if (oldHeight != newHeight) {
weakSelf.imageHeights[indexPath.row] = @(newHeight);
[weakSelf.tableView beginUpdates];
[weakSelf.tableView endUpdates];
}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Error: %@\nFetching image with url: %@", error, request.URL);
}];
return cell;
}
简单!我们现在可以在tableView:heightForRowAtIndexPath:方法中返回正确的值,如下所示:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [self.imageHeights[indexPath.row] integerValue];
}
正确重新加载表格视图
尝试尝试一些不同的方法。我发现只调用beginUpdates和endUpdates会在更改单元格高度时产生最佳动画/转换。你也可以放入reloadRowsAtIndexPaths:withRowAnimation:在这两者之间进行调用,但它会进行额外的刷新,并且UI看起来很糟糕。