繁体   English   中英

tableviewcell中的自动布局纵横比imageview

[英]autolayout aspect ratio imageview in tableviewcell

我有一个自定义tableViewCell,其中有一个imageView。 这样的布局:

布局

我想使用自动布局来计算方法中单元格的高度

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

所以我设置了这样的约束

树

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

问题是我还要添加一个约束,即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];

通过这种方式,您可以保留固有尺寸的一半(仅高度),并获得自定义宽度。

希望我的解释有意义。 让我知道您是否有任何疑问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM