UIStackView - 自动布局堆

自动布局是:有了这玩意,我们可以少写一些代码,或者少拉一些约束。
而且对于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;// ??

你可能感兴趣的:(UIStackView - 自动布局堆)