以编程方式在UIStackView中添加视图

堆栈视图使用内部内容大小,因此使用布局约束来定义视图的尺寸。

有一种简单的方法可以快速添加约束(示例):

  [view1.heightAnchor constraintEqualToConstant:100] .active = true; 

完整代码:

  -(void)setup {//查看1 
UIView * view1 = [[UIView alloc] init];
view1.backgroundColor = [UIColor blueColor];
[view1.heightAnchor constraintEqualToConstant:100] .active = true;
[view1.widthAnchor constraintEqualToConstant:120] .active = true;
//查看2
UIView * view2 = [[UIView alloc] init];
view2.backgroundColor = [UIColor greenColor];
[view2.heightAnchor constraintEqualToConstant:100] .active = true;
[view2.widthAnchor constraintEqualToConstant:70] .active = true; //查看3
UIView * view3 = [[UIView alloc] init];
view3.backgroundColor = [UIColor洋红色];
[view3.heightAnchor constraintEqualToConstant:100] .active = true;
[view3.widthAnchor constraintEqualToConstant:180] .active = true; //堆栈视图
UIStackView * stackView = [[UIStackView alloc] init]; stackView.axis = UILayoutConstraintAxisVertical;
stackView.distribution = UIStackViewDistributionEqualSpacing;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.spacing = 30;
[stackView addArrangedSubview:view1];
[stackView addArrangedSubview:view2];
[stackView addArrangedSubview:view3]; stackView.translatesAutoresizingMaskIntoConstraints = false;
[self.view addSubview:stackView];
//堆栈视图的布局
[stackView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor] .active = true;
[stackView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor] .active = true;
}

注意:这已在iOS 9上进行了测试