如何使用AutoLayout使我的UIImage与UILabel的内在高度相同?

8
我想使用水平堆栈视图将图标(UIImage)放在标签(UILabel)旁边。我希望图标始终与标签的文本高度相同。如果用户增加系统字体大小,我希望图标能相应调整以保持相同高度。
请注意,具有图标和标签的堆栈视图位于UITableViewCell中。
我该如何做?
到目前为止,我的AutoLayout设置如下:
- UITableViewCell高度设置为默认值。 - 堆栈视图约束为UITableViewCell的大小。 - 堆栈视图对齐方式和分布设置为填充。 - UILabel内容紧缩优先级为250,压缩阻力优先级为750。 - UIImageView内容紧缩优先级为250,压缩阻力优先级为749。 - UIImageView宽高比为1:1。 - UIImageView与UILabel相同高度。
但是,我只得到了这个:enter image description here 需要说明的是,我尝试过许多不同的组合,但这是我获得的最佳结果。 我希望UIImageView(Facebook徽标)与“Some text”一样高。
我想要的效果是:enter image description here

如果标签与StackView(等于单元格)高度相等,则UIImageView和UILabel实际上具有相同的高度。 UILabel垂直居中文本。 - vicegax
是的,UILabel 最终会被拉伸到与 UIImageView 相同的高度。我将 UILabel 的背景颜色设置为灰色以显示这一点。我希望 UILabel 保持其固有高度。 - Dan
你需要通过编程实现它,这里有一篇关于如何根据UILabel所显示的文本和需要展示的宽度来计算其高度的文章:https://dev59.com/o14c5IYBdhLWcg3w7t_E。 - vicegax
1个回答

13

当图片变大时,标签也会跟着增长,但你希望它们的行为相反。你可以通过控制内容抗压缩优先级和内容抱紧优先级来实现。你应该将标签的垂直内容抱紧优先级设置为"必须"。这将防止标签变得比其自然高度更大。将图片的垂直内容抗压缩优先级,以及可能的水平对应项,都设为低,这将允许图片缩小到与标签相同的高度。


2
太好了。我将标签的垂直压缩阻力优先级设置为1000,将图像的压缩阻力优先级设置为250。谢谢! - Dan
2
非常感谢。这太棒了!如果可以的话,我会给10分。 - coolcool1994

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接