tableviewcell

时间:2015-04-23 07:13:09

标签: ios uiimageview autolayout aspect-ratio

我有一个自定义的tableViewCell,里面有一个imageView。布局如下:

layout

我想使用autolayout来计算方法

中单元格的高度

CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

所以我设置了像这样的约束

tree

基本上这些约束只是将每个元素固定到其superView的边缘或上/下的视图。

问题在于我还想添加一个约束,即imageView的宽高比。我想设置imageView的高度始终是其宽度的一半。如果我直接将宽高比约束设置为2:1,我总会得到Unable to simultaneously satisfy constraints错误。我尝试将优先级更改为高,但仍然没有运气。

我可以使用autolayout来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您的约束工作和正确计算自动高度的原因是所有UI元素都有自己的内在大小(使其适合其内容的大小)。

因此,imageView的大小已经适合您放入的图像。您不能同时使用内在大小并指定自己的大小(即使您只想更改其中一个维度)。

我看到的解决方案是在UIImageView上设置静态高度约束,加上宽度的宽高比。然后在代码中将高度约束的常量设置为image.size.height值。

[self.imageHeightConstraint setConstant:self.imageView.image.size.height];
[self.view layoutIfNeeded];

通过这种方式,你可以保持一半的内在尺寸(只是高度)并获得自定义宽度。

希望我的解释有意义。如果您有疑问,请告诉我。