Swift 视图权重类似线性布局
如何使用StackView设计以下布局 我知道不用stackview就可以很容易地创建它,但是使用stackview有可能吗?因为我有很多已经使用stackview设计的ui。我如何在像上图这样的视图之间添加分隔符 为此,我设置了以下约束 **但是运行时它显示为**Swift 视图权重类似线性布局,swift,autolayout,uistackview,Swift,Autolayout,Uistackview,如何使用StackView设计以下布局 我知道不用stackview就可以很容易地创建它,但是使用stackview有可能吗?因为我有很多已经使用stackview设计的ui。我如何在像上图这样的视图之间添加分隔符 为此,我设置了以下约束 **但是运行时它显示为** 您可以使用UIStackViews来实现这一点,以下是方法: 首先,创建UIView的子类,用作两个按钮之间的UIView类 class CustomWidthView: UIView { override var i
您可以使用
UIStackView
s来实现这一点,以下是方法:
首先,创建UIView
的子类,用作两个按钮之间的UIView
类
class CustomWidthView: UIView {
override var intrinsicContentSize: CGSize {
return CGSize(width: 1, height: self.frame.height)
}
}
您只需要重写intrinsicContentSize
现在,在两个按钮之间添加一个空的UIView
,并将UIView
的类设置为CustomWidthView
。在堆栈视图中嵌入两个按钮及其之间的视图,并使用适当的约束正确设置堆栈视图的位置
选择堆栈视图,然后从属性检查器中查找名为Distribution的属性,并从其旁边的下拉菜单中选择“按比例填充”
要在UI Builder中反映您所做的更改,请选择“自定义宽度”视图,然后转到“大小检查器”,转到列表底部,您将找到一个名为“内部大小”的属性,将其值更改为“占位符”,然后从“宽度”下拉菜单中选择1
可能有更好的方法来实现这一点,但这是我目前找到的方法,我希望找到更好的方法。您可以使用一些简单的
自动布局约束
来获得具有UIStackView
的此类界面
下图描述了您可以应用的层次结构和约束
:
另外,接受和拒绝
按钮具有等宽
约束
输出屏幕截图:
由于UIStackView
使用自动布局来排列其子视图,因此可以通过创建约束来修改其行为
我假设堆栈中有三个视图:接受按钮、分隔器和取消按钮
创建两个约束:
“接受”按钮和“取消”按钮之间的等宽约束
分隔符上的固定宽度约束(假定将其宽度设置为1)
另请参见。您不需要创建任何子类。您只需使用子视图上的约束即可。明确地说“您还可以通过向排列视图添加其他约束来微调排列视图的外观。”我同意这是过分的,我尝试的第一个解决方案与您的答案中的解决方案类似,但由于某些原因,它在UI Builder中按预期绘制,但是当您运行时,然后中间视图没有显示。它在情节提要中看起来很完美,但是当我运行project divider时,它没有显示。您是否将中间视图的背景设置为黑色,将imageView的背景设置为白色?我已添加了我在同一视图中获得的输出的屏幕截图。在这里您可以找到情节提要链接:当然..愉快的编码..:)怎么办你的意思是“空白黑色区域”见上面的更新问题