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