繁体   English   中英

UIStackView内不同宽度的水平居中视图

[英]Center views horizontally of different widths inside a UIStackView

我想设置一个UIViewStack,以便它将两个视图居中,即使它们有不同的宽度。 这是一个例子:

例

是否可以使用UIStackView实现此类配置? 我似乎无法弄明白!

任何帮助,将不胜感激。

您应该使用嵌套的StackView 首先在Horizontal StackView嵌入View1和Horizontal StackView 按比例填充对齐属性中心和分布。 然后将Horizontal StackView嵌入Vertical Stackview 这里我附上了我的演示截图: 在此输入图像描述

不,你不能。 来自苹果的Doc

堆栈视图使用“自动布局”来定位和调整其排列的视图大小。 堆栈视图将第一个和最后一个排列的视图与其沿着堆栈轴的边缘对齐。 In a horizontal stack, this means the first arranged view's leading edge is pinned to the stack's leading edge, and the last arranged view's trailing edge is pinned to the stack's trailing edge.

您可以使用约束

在那里添加视图后,我可以使UIStackView自动增长宽度

  1. 创建UIViewController并让UIStackView成为那里的中心 在此输入图像描述
  2. Constraint StackView.leading Priority设置为250以避免xib中的警告问题 在此输入图像描述
  3. 代码

    class StackSampleViewController:UIViewController {

     @IBOutlet weak var stackView: UIStackView! //Keep center auto grow with subviews @IBAction func touchUpAdd(_ sender: Any) { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false view.heightAnchor.constraint(equalToConstant: 20.0).isActive = true if (stackView.subviews.count % 2) == 0 { view.widthAnchor.constraint(equalToConstant: 100).isActive = true view.backgroundColor = .black } else { view.widthAnchor.constraint(equalToConstant: 50).isActive = true view.backgroundColor = .red } stackView.addArrangedSubview(view) } 

    }

  4. 结果 在此输入图像描述

是的,您可以,首先创建主垂直堆栈视图并设置对齐中心和分布填充。 然后在主堆栈中创建第二个水平堆栈视图,并设置对齐和分配填充。 添加要添加的最后一个元素。

第一个栈视图: 第一个stackview

第二个栈视图: 第二个栈视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM