UIStackView 约束的问题
Problems with UIStackView constraints
我有一个水平堆栈视图,左侧是一个空的 UIView,右侧是一个标签。在故事板生成器中,它看起来很完美(只看绿色行):
然而,当我 运行 Sim 或设备上的应用程序时,颜色视图只是折叠并消失:
我将堆栈视图设置为居中对齐和按比例分布。
如果我给颜色视图设置宽度,它在 Sim/device 中运行良好,但是我在界面构建器中收到警告,这让我很烦。我认为有更正确的方法,但我不知道那是什么。设置宽度警告:
它只允许我删除width=50(我输入的那个)。它不允许我删除 width=0(不是我设置的,似乎是默认设置)。
有人有什么想法吗?
首先,您设置一个比例分布,它告诉堆栈视图:"Hey stackview, lay-out the views proportional"。然后,你设置一个固定的宽度,所以你说:"Hey stackview, give this a ... width"。两者不能并存,因为它们是不同的。
要么创建 2 个堆栈视图,要么在堆栈视图中添加一个 UIView,并使该图像与其父 UIView 成比例。
所以:
-Stackview
-UIView
-Image proportional to UIView
-Label proportional to UIView
-UIView
-Image pro...
-label...
-UIView
-Image...
-label...
并将您的 StackView 设置为 "Fill equally" 以使用这种方式。
使用 StackViews
一种有效的方法是将标签旁边的颜色条设为图像并使用 UIImageView
代替。然后 StackView 将认为 UIImageView
有内容而不压缩它。但这显然会花费更多的资源。另请注意,用于条带的图像必须具有相同的大小,否则 StackView 也会将它们压缩为不同的屏幕大小。
另一种方法是将 StackView 的 Distribution
属性 设置为 Fill Equally
这将使条带和标签各占一半 space。它可以工作,但可能无法提供您正在寻找的视觉效果。
备选方案
根据提供的信息量,我认为不需要使用 StackViews。您可以改为只应用给出条带和固定宽度的约束。
您也可以尝试使用自动布局,方法是将每个条带设置为固定到前导和顶部的距离,同时保持其大小(实际上是默认设置)和标签相同,除了还要固定其到尾随和宽度的距离与超级视图一起扩展。
我有一个水平堆栈视图,左侧是一个空的 UIView,右侧是一个标签。在故事板生成器中,它看起来很完美(只看绿色行):
然而,当我 运行 Sim 或设备上的应用程序时,颜色视图只是折叠并消失:
我将堆栈视图设置为居中对齐和按比例分布。
如果我给颜色视图设置宽度,它在 Sim/device 中运行良好,但是我在界面构建器中收到警告,这让我很烦。我认为有更正确的方法,但我不知道那是什么。设置宽度警告:
它只允许我删除width=50(我输入的那个)。它不允许我删除 width=0(不是我设置的,似乎是默认设置)。
有人有什么想法吗?
首先,您设置一个比例分布,它告诉堆栈视图:"Hey stackview, lay-out the views proportional"。然后,你设置一个固定的宽度,所以你说:"Hey stackview, give this a ... width"。两者不能并存,因为它们是不同的。
要么创建 2 个堆栈视图,要么在堆栈视图中添加一个 UIView,并使该图像与其父 UIView 成比例。
所以:
-Stackview
-UIView
-Image proportional to UIView
-Label proportional to UIView
-UIView
-Image pro...
-label...
-UIView
-Image...
-label...
并将您的 StackView 设置为 "Fill equally" 以使用这种方式。
使用 StackViews
一种有效的方法是将标签旁边的颜色条设为图像并使用 UIImageView
代替。然后 StackView 将认为 UIImageView
有内容而不压缩它。但这显然会花费更多的资源。另请注意,用于条带的图像必须具有相同的大小,否则 StackView 也会将它们压缩为不同的屏幕大小。
另一种方法是将 StackView 的 Distribution
属性 设置为 Fill Equally
这将使条带和标签各占一半 space。它可以工作,但可能无法提供您正在寻找的视觉效果。
备选方案
根据提供的信息量,我认为不需要使用 StackViews。您可以改为只应用给出条带和固定宽度的约束。
您也可以尝试使用自动布局,方法是将每个条带设置为固定到前导和顶部的距离,同时保持其大小(实际上是默认设置)和标签相同,除了还要固定其到尾随和宽度的距离与超级视图一起扩展。