动态tableViewCell中imageView的宽高比

时间:2015-08-01 17:22:46

标签: ios swift autolayout

我有一个包含4个动态原型单元格的tableView:其中三个用于不同类型的标签,另一个用于imageView。

在viewDidLoad()中,我使用此代码根据内容确定每个单元格的高度:

tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension

问题出在带有imageView的单元格上。 要显示的图片几乎占据了所有单元格,需要以横向显示才能保持其纵横比。 我能够做到这一点,设置top,bottom,trailing,leading和height约束:这样tableView就可以计算出合适的row.height。

从iPhone 6切换到4,图像宽度减小但高度保持不变,导致奇怪的比例。

我需要根据当下的宽度来计算八个视图,我尝试了两种方式:

为高度创建NSLayoutConstraint插座。如果我为它分配一个静态值它可以工作,但当我尝试计算如下:

constraintOutletForTheHeight.constant = CGFloat(myImageView.frame.size.width / 2)

它开始显示具有旧值的第一个单元格,其他单元格显示为计算出的高度值。

我还尝试从Storyboard设置aspectRatio约束,但在这两种情况下Xcode都告诉我它不能同时满足约束。

感谢您的关注

1 个答案:

答案 0 :(得分:0)

经过大量的println()之后,我发现了我错在哪里以及解决方案(不是最优雅的,但至少可行)。

我发现imageView的起始宽度是通过storyboard分配的(即使在我设置了imageView.image属性之后),经过一些滚动后,它会切换到假定值:这就是我遇到约束错误的原因。 作为tableView:cellForRowAtIndexPath:中的解决方案,我使用了tableView width属性,如下所示:

{{1}}

如果您知道更好的解决方案,我欢迎您,否则我希望它可以帮助其他人。