【问题标题】:UIView with dynamic height multiple UILabel具有动态高度多个UILabel的UIView
【发布时间】:2016-08-05 00:14:13
【问题描述】:

我正在制作一个包含 2 个 UILabel 的自定义 UIView,每个 UILabel 都具有动态高度。 我无法为动态高度设置约束。 (我是 Auto-Layout 和 iOS 方面的新手)。

两个 UILabel 从顶部和底部相互连接,并与 superview 水平对齐。当我更改 UILabel 之一的内容时,UIView 和 UILabel 不会根据需要调整大小。

请提出建议。附上当前约束的屏幕截图。

【问题讨论】:

  • 你对 UIView 有什么限制?
  • 水平居中对齐,垂直居中对齐和宽度
  • 似乎是对的。你可以发送你的xib文件吗?

标签: ios objective-c swift autolayout nslayoutconstraint


【解决方案1】:

我根据你的要求为你做了一个demo。从下面的链接下载它,

Autoresize UIView and UILabel

分步指南:-

第 1 步:- 将约束设置为 UIView

1) 领先 2) 前 3) 尾随(从主视图)

第 2 步:- 将约束设置为标签 1

1) 领先 2) 前 3) 尾随(来自它的超级视图)

第 3 步:- 将约束设置为标签 2

1) 领先 2) 前 3) 尾随(来自它的超级视图)

第 4 步:- 最棘手的从 UIView 给 UILabel 底部。

在 Xcode 10 及更高版本中 - 选择您的 UIView 和标签,然后从对齐约束部分选择底部边缘约束。

第 5 步:-(可选)将约束设置为 UIButton

1) 领先 2) 底部 3) 尾随 4) 固定高度(从主视图)

输出:-

注意:-请确保您已在 Label 属性中设置 Number of lines =0。

Edit1 :- 如果您想使用 BottomConstrain (>=) 增加尺寸,请查看下面的图片。

我希望这些信息足以理解 Autoresize UIView 根据 UILabel 的高度和 Autoresize UILabel 根据文本。

【讨论】:

  • 谢谢。 @RahulShirphule
  • 如果标签是水平的(并排)而不是垂直的怎么办?并且任何标签的高度都可以增加。我们如何告诉 UIView 根据这个增加的标签增加高度?
  • 最佳答案,通俗易懂!
  • 我在 Stack Overflow 上看到的最佳答案
  • 是的,如果 UIView 在单独的 XIB 中定义,这实际上不起作用。此外,如果进入标签的数据来自 API。
【解决方案2】:
  1. 在界面生成器中将两个标签的 Lines 属性设置为 0。
  2. 确保没有任何标签或 uiview 的高度限制。
  3. 确保 uiview 没有强制它到某个大小的约束,例如,如果您对 uiview 有一个与父视图顶部有一定距离的约束,而另一个与父视图底部有一定距离的约束,它不会工作。
  4. 尝试更改代码中标签的文本,高度应该会自动调整。

【讨论】:

  • 没有在任何地方添加高度限制,高度仍然没有调整
  • 在更改标签文本后尝试 uilabel.sizetofit()。
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多