我有一个水平堆栈视图,左侧是空的UIView,右侧是标签。在storyboard builder中,它看起来很完美(只看绿色行):
然而,当我在Sim或设备上运行应用程序时,颜色视图会崩溃并消失:
我将堆栈视图设置为居中对齐和比例分布。
如果我给色彩视图设置一个宽度,它在Sim / device中运行良好,但是我在界面构建器中收到警告,这让我很烦。我假设有一种更正确的方法,但我不知道那是什么。设置宽度警告:
它只允许我删除width = 50(我输入的那个)。它不允许我删除width = 0(不是由我设置,似乎是默认值)。
有人有什么想法吗?
答案 0 :(得分:2)
首先,设置一个比例分布,它告诉stackview:“嘿stackview,布局视图比例”。然后,你设置一个固定的宽度,所以你说:“嘿stackview,给它一个...宽度”。两者都不能在一起,因为它们是不同的。
制作2个堆栈视图,或者将UIView添加到堆栈视图中,并使该图像与其父UIView成比例。
所以:
-Stackview
-UIView
-Image proportional to UIView
-Label proportional to UIView
-UIView
-Image pro...
-label...
-UIView
-Image...
-label...
并将StackView设置为“平均填充”以使用此方式。
答案 1 :(得分:1)
使用StackViews
一种有效的方法是使标签旁边的颜色条成为图像,然后使用UIImageView
。然后,StackView会认为UIImageView
有内容而不是压缩内容。但这显然会耗费更多资源。另请注意,用于条带的图像必须大小相同,否则StackView会将它们压缩到不同大小的屏幕上。
另一种方法是将StackView的Distribution
属性设置为Fill Equally
,这将为条带和标签提供每半个空间。它可以工作,但可能无法提供您正在寻找的视觉效果。
<强>替代强>
根据提供的信息量,我认为没有要求使用StackViews。您可以改为仅应用赋予条带和固定宽度的约束。
您还可以尝试使用自动布局,通过设置每个条带来固定距离前端和顶部的距离,同时保持其大小(实际上是默认设置)和标签相同,除了还将其距离固定到尾部和宽度到比例超级视图。