Ios 自调整大小UITableViewCell中具有固定大小UIImageView和动态高度UILabel的冲突约束
我正在尝试使用Ios 自调整大小UITableViewCell中具有固定大小UIImageView和动态高度UILabel的冲突约束,ios,autolayout,uistackview,Ios,Autolayout,Uistackview,我正在尝试使用UIStackView创建一个相对简单的自调整大小UITableViewCell。该单元格最终将类似于默认的UITableViewCellSubtitle。它有一个UIImageView,大小应该正好为64x64,旁边是一个动态高度UILabel(numberOfLines==0,动态类型,preferredMaxLayoutWidth设置为自动)。单元格的高度应至少与UIImageView一样高,但如果UILabel中的文本高于UIImageView,则单元格的高度应更高 这是单
UIStackView
创建一个相对简单的自调整大小UITableViewCell
。该单元格最终将类似于默认的UITableViewCellSubtitle
。它有一个UIImageView
,大小应该正好为64x64,旁边是一个动态高度UILabel
(numberOfLines==0
,动态类型,preferredMaxLayoutWidth
设置为自动)。单元格的高度应至少与UIImageView
一样高,但如果UILabel
中的文本高于UIImageView
,则单元格的高度应更高
这是单元格的外观:
我遇到了矛盾的约束,我无法解释原因。UIStackView的轴
是水平的,带有对齐
前导顶部和分布
填充。UIImageView
具有明确的宽度和高度。UILabel没有约束。UIStackView
设置为将所有四个边与contentView
的边距对齐
如果单元格具有静态高度,则一切正常,不过我还必须使用boundingRectWithSize:
手动测量UILabel
中字符串的长度,并实现heightforrowatinexpath:
。我宁愿让视图系统为我解决这个问题
我的假设是我的拥抱/压缩特性有点不对劲。我已尝试将
UIImageView
的拥抱和抗压优先级设置为1000
,因为我不希望它的大小超过我设置的显式大小。我已经尝试将UILabel
的拥抱优先级设置为低而抗压缩性设置为高,因为我希望UILabel
的大小与文本大小完全相同。我已尝试将UIImageView
上的宽度约束更改为您在运行时尝试过吗?我删除了我的答案,但只是在代码中尝试了这个精确的设置,效果很好。InterfaceBuilder在使用UIStackView执行任何操作时通常都很糟糕,因此可能是IB在这里给您带来了麻烦。@Fogmeister您不能在Xcode 9b5中存在错误的情况下运行。如果取消选中“自动调整大小”复选框以“消除”错误,则会收到“无法满足约束”消息。rdar://33867871Ah很公平。我今天也为另一个UIStackView和InterfaceBuilder的东西打开了一个类似的雷达。您在运行时尝试过这个吗?我删除了我的答案,但只是在代码中尝试了这个精确的设置,效果很好。InterfaceBuilder在使用UIStackView执行任何操作时通常都很糟糕,因此可能是IB在这里给您带来了麻烦。@Fogmeister您不能在Xcode 9b5中存在错误的情况下运行。如果取消选中“自动调整大小”复选框以“消除”错误,则会收到“无法满足约束”消息。rdar://33867871Ah很公平。我今天也为另一个UIStackView和InterfaceBuilder的东西打开了一个类似的雷达。