【问题标题】:Autolayouts: how to center a group with two/one intrinsic elements?自动布局:如何使具有两个/一个内在元素的组居中?
【发布时间】:2018-06-16 19:11:06
【问题描述】:

这个问题可能不是很独特,但仍然找不到解决方案。 布局如图所示:

所以,我有两个宽度不同的元素,其中一个(或两者)具有动态(标签的值可以更改)。所以,我需要的是集中它,让我们称之为“组”。标签必须是不同的元素,因为我可以应用不同的字体大小和面孔。如果那将是一个文本编辑器,它只会是带有不同标记的一行。但是不知道如何使用 Autolayout 来实现。有什么建议吗?

不要建议将标签放在容器内并将该容器居中(除非有办法正确设置该容器的宽度(以及动态)),如 标签宽度是动态的,因此在容器内将这些元素居中的问题仍然悬而未决。

UPD:改进了附加的图像。

【问题讨论】:

  • 您可以做的是将两个标签都放在 UIView 中。然后,您可以将视图居中,而不必担心它们都居中。
  • 好的。将它们集中在容器内的方法是什么?正如我所提到的,元素的宽度是动态的。
  • 好吧,您可以添加一个约束,将视图的宽度设置为自动。所以视图宽度只会适应标签的宽度。然后从那里添加另一个以视图为中心的约束。
  • “添加一个将视图宽度设置为自动的约束”是什么意思?如果你确定这会起作用,你能把它作为问题的答案吗?

标签: ios layout autolayout interface-builder constraints


【解决方案1】:

您可以将它们包装在一个视图中,并将该视图置于屏幕中心。

详细说明:

抓取一个空视图并将其拖到界面构建器中,将其设置为 centerX 和任何高度约束,然后向其添加 2 个标签,将第一个标签的前导挂钩到该视图的前导并为其赋予 CenterY 约束,使第二个标签前导等于第一个标签的尾随并钩住它的尾随视图的尾随并赋予它 centerY 约束,这样您就可以根据其子视图获得动态视图宽度,但这仅适用于具有预定义宽度或固有内容大小的子项目,如标签和按钮。

在行动:

这是一个关于如何使用约束创建它的 gif 图像

group intrinsic gif

【讨论】:

  • 请注意,标签宽度是动态的,所以我仍然需要将它们在容器内居中,所以这根本不能解决问题。
  • “使宽度相等”是什么意思?标签宽度必须不同。
  • 你能画出这样的布局并附上图片吗?
  • 自动布局会检测到较大的并使其相等
  • 标签宽度不能相等。这是问题的核心。两个标签的居中必须不对称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多