【问题标题】:How can I make my UIImage the same height as the intrinsic height of my UILabel using AutoLayout?如何使用 AutoLayout 使我的 UIImage 的高度与我的 UILabel 的固有高度相同?
【发布时间】:2017-08-05 12:11:12
【问题描述】:

我想使用水平堆栈视图将图标 (UIImage) 放置在标签 (UILabel) 旁边。我想要它,所以图标始终与标签的文本高度相同。如果用户增加系统字体大小,我希望图标相应调整以保持相同的高度。

注意带有图标和标签的堆栈视图位于 UITableViewCell 中。

我该怎么做?

到目前为止,我有以下 AutoLayout 设置:

  • UITableViewCell 高度设置为默认值。
  • 堆栈视图受限于 UITableViewCell 的大小。
  • 堆栈视图对齐和分布设置为填充。
  • UILabel 内容拥抱优先级 250 和抗压缩优先级 750。
  • UIImageView 内容拥抱优先级 250 和抗压缩优先级 749。
  • UIImageView 纵横比 1:1。
  • UIImageView 与 UILabel 高度相同。

我得到的是:

不用说,我尝试了许多不同的组合,但这是我得到的最好的。我希望 UIImageView(Facebook 徽标)与“某些文本”的高度相同。

我想要这个:

【问题讨论】:

  • 也许UIImageView和UILabel实际上是相同的高度,如果label与StackView的高度相等(即等于Cell)。 UILabel 垂直居中文本。
  • 是的,UILabel 最终拉伸到与 UIImageView 相同的高度。我将 UILabel 的背景着色为灰色以显示这一点。我希望 UILabel 保持其固有高度。
  • 您需要以编程方式进行,这里有一篇关于如何根据 UILabel 显示的文本和必须显示的宽度知道其高度的帖子:stackoverflow.com/questions/27374612/…

标签: ios xcode autolayout


【解决方案1】:

您的标签随着图像的增长而增长,但您想要相反的行为。您可以通过内容压缩阻力优先级和内容拥抱优先级来控制它。您应该将标签的垂直内容拥抱优先级设置为必需。这将不允许标签变得大于其自然高度。将图像的垂直内容压缩阻力优先级设置为低,可能还有它的水平吊坠,这将允许图像缩小到标签高度。

【讨论】:

  • 那行得通。我将标签的垂直抗压优先级设置为 1000,图像的抗压优先级设置为 250。谢谢!
  • 非常感谢。这太棒了! + 10 如果可以的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多