【问题标题】:iOS - Make UIImageView resize to fit UILabel with AutoLayoutiOS - 使用 AutoLayout 调整 UIImageView 的大小以适应 UILabel
【发布时间】:2016-03-18 08:55:40
【问题描述】:

我有这个问题已经很久了,这让我发疯:我有一个带有可以动态更改文本的 UILabel,我有一个 UIImageView 应该充当文本的背景。我希望 UIImageView 自行调整大小以始终适合 UILabel 的文本。

例如,“付费”可以变成“免费”或法语中的“付款”,并且后面的框应始终调整大小。

使用 Storyboard,我尝试在其上添加带有 UILabel 的 UIImageView,并将 UILabel 的约束设置为 UIImageView,但这最终会将 UILabel 的大小调整为 UIImageView 的大小。我无法为 UIImageView 设置固定的宽度或高度,因为它应该适应。

我的第二次尝试是制作一个 UIView,将其重新分类为 UIIimageView,将 UILabel 添加为子视图,使 UIView 调整为 UILabel 的大小并以编程方式添加图像,但又一次没有成功。

这样做的正确方法是什么?

【问题讨论】:

  • 第一种方法是否尝试将 Content Hugging Priority 水平和垂直更改为必需?
  • 您也可以只使用 UIButton 并将其设置为背景图像并关闭用户交互。
  • @beyowulf 我也尝试过 UIButton:默认图像大于文本,按钮采用图像的大小,并将文本放在中间。它不会根据文本调整大小。对于第一种方法:我不确定如何设置具有拥抱优先级的正确约束?

标签: ios objective-c uiimageview autolayout uilabel


【解决方案1】:

对于第一种方法,我假设您设置了标签和图像视图具有相同的垂直和水平中心以及相同的高度和宽度。问题是布局引擎假设图像的内在大小比标签更重要。要更改它,您需要更改拥抱优先级和视图的抗压性。 转到标签(图片)的尺寸检查并将拥抱优先级增加到所需的。这将使它的高度和宽度成为它的固有高度和宽度。您还可以降低图像视图的压缩阻力,因此更适合缩小尺寸。

标签的约束:

您可以更改顶部和引导以将其放置在视图中的适当位置。

图像视图的约束:

【讨论】:

  • 我应该在 UIImageView 和 UILabel 之间使用哪些确切的约束来完成这项工作?
  • 我已经更新了我的答案。我只是使用我在回答中所说的限制。
  • 你是个天才先生。非常感谢。
  • 干得好,非常感谢:D
猜你喜欢
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 2020-08-07
  • 1970-01-01
相关资源
最近更新 更多