自动布局是:有了这玩意,我们可以少写一些代码,或者少拉一些约束。
而且对于3等分啊,什么的布局很是方便。
虽然它是继承UIView 的,但是并不会实际渲染,再布局时也不用给几个控件拉一个真的contentView了。
注1:苹果官方文档写的非常清楚,iOS9新的就是不一样,都有大图。
注2:因为要iOS9以上才能用,所以:有了下面这个库,支持iOS6,注意,啥都不需要干,pod就好了。如果是storyboard 的话,需要把build for 改成iOS9.0以上,但是实际运行在iOS9以下也是ok嗒。
https://github.com/forkingdog/FDStackView
注3:可以用代码写一遍,然后在storyboard 上用就横明白了。
创建
NSArray *stackSubViews = @[self.view1,self.view2,self.view3];
self.stackView = [[UIStackView alloc] initWithArrangedSubviews:stackSubViews];
[self.view addSubview:self.stackView];
属性
self.stackView.axis = UILayoutConstraintAxisHorizontal;// 布局方向
self.stackView.distribution = UIStackViewDistributionFillEqually;// 填充方式
/*
UIStackViewDistributionFill = 0, // 自定义宽高
UIStackViewDistributionFillEqually, // 布局方向均分:宽或高自己写
UIStackViewDistributionFillProportionally, // 布局方向排布,超出的截断
UIStackViewDistributionEqualSpacing, // 间距一致
UIStackViewDistributionEqualCentering, // center 均分
// 一般只需要设置内容的 宽 或 高
*/
self.stackView.alignment = UIStackViewAlignmentFill;// 对齐方式
/*
UIStackViewAlignmentFill,// 充满,不需要设置宽高,会冲突
UIStackViewAlignmentCenter,// 居中
UIStackViewAlignmentLeading,
UIStackViewAlignmentTop = UIStackViewAlignmentLeading,
UIStackViewAlignmentTrailing,
UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing,
UIStackViewAlignmentFirstBaseline,
UIStackViewAlignmentLastBaseline,
// 对齐方式,需要对应少量设置
*/
self.stackView.spacing = 20.;// 间距。 某几种布局有效,优先级不是很高,
其他
// self.stackView.layoutMarginsRelativeArrangement = YES;// ??
// self.stackView.baselineRelativeArrangement = YES;// ??