Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自调整大小UITableViewCell中具有固定大小UIImageView和动态高度UILabel的冲突约束_Ios_Autolayout_Uistackview - Fatal编程技术网

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的东西打开了一个类似的雷达。