我有一个自定义的tableViewCell,里面有一个imageView。布局如下:
我想使用autolayout来计算方法
中单元格的高度 CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
所以我设置了像这样的约束
基本上这些约束只是将每个元素固定到其superView的边缘或上/下的视图。
问题在于我还想添加一个约束,即imageView的宽高比。我想设置imageView的高度始终是其宽度的一半。如果我直接将宽高比约束设置为2:1,我总会得到Unable to simultaneously satisfy constraints
错误。我尝试将优先级更改为高,但仍然没有运气。
我可以使用autolayout来实现这一目标吗?
答案 0 :(得分:0)
您的约束工作和正确计算自动高度的原因是所有UI元素都有自己的内在大小(使其适合其内容的大小)。
因此,imageView
的大小已经适合您放入的图像。您不能同时使用内在大小并指定自己的大小(即使您只想更改其中一个维度)。
我看到的解决方案是在UIImageView
上设置静态高度约束,加上宽度的宽高比。然后在代码中将高度约束的常量设置为image.size.height值。
[self.imageHeightConstraint setConstant:self.imageView.image.size.height];
[self.view layoutIfNeeded];
通过这种方式,你可以保持一半的内在尺寸(只是高度)并获得自定义宽度。
希望我的解释有意义。如果您有疑问,请告诉我。