UITableViewCell not shrinking to wrap UIImageView

时间:2016-04-21 22:49:41

标签: ios uitableview autolayout ios-autolayout

I have a TableView whose first element is a fixed aspect ratio header image. I embedded a UIImageView inside the UITableViewCell's Content View. The desired outcome is the entire cell adopting the size of the image. I tried a couple of things, first of all, pinning all four edges of the UIImageView to the parent Content View and setting the aspect ratio to my desired value (2h by 3w). With this setup the aspect ratio constraint gets completely ignored and the image view takes up the height of the cell, which shrinks my asset. Next, I tried to remove the bottom constraint. As a result, the aspect ratio is respected, but the cell height is larger than that of the image view.

My question is, can I make the cell shrink to wrap the height of the image view using auto layout?

1 个答案:

答案 0 :(得分:0)

  

我可以使用autolayout缩小单元格以包裹图像视图的高度吗?

是的,你可以,但有一个技巧。 UITableViews的所有单元格都有一个固定的高度。如果需要变量高度,则必须实现UITableViewDelegate方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

如果您的单元格约束已正确设置(我的意思是,如果您使用UIView而不是单元格,它的大小将由其内容定义),您将能够执行此操作像这样的东西:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:kIdentifier];
// setup your cell image
return [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
}

问题是,如果您要从网络上检索图像,则无法在不加载图像的情况下知道图像的大小。 如果您使用的是本地图像,则应该可以使用。