自動布局是:有了這玩意,我們可以少寫一些代碼,或者少拉一些約束。
而且對于3等分啊,什么的布局很是方便。
雖然它是繼承UIView 的,但是并不會實(shí)際渲染,再布局時也不用給幾個控件拉一個真的contentView了。
注1:蘋果官方文檔寫的非常清楚,iOS9新的就是不一樣,都有大圖。
注2:因?yàn)橐猧OS9以上才能用,所以:有了下面這個庫,支持iOS6,注意,啥都不需要干,pod就好了。如果是storyboard 的話,需要把build for 改成iOS9.0以上,但是實(shí)際運(yùn)行在iOS9以下也是ok嗒。
https://github.com/forkingdog/FDStackView
注3:可以用代碼寫一遍,然后在storyboard 上用就橫明白了。
創(chuàng)建
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 均分
// 一般只需要設(shè)置內(nèi)容的 寬 或 高
*/
self.stackView.alignment = UIStackViewAlignmentFill;// 對齊方式
/*
UIStackViewAlignmentFill,// 充滿,不需要設(shè)置寬高,會沖突
UIStackViewAlignmentCenter,// 居中
UIStackViewAlignmentLeading,
UIStackViewAlignmentTop = UIStackViewAlignmentLeading,
UIStackViewAlignmentTrailing,
UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing,
UIStackViewAlignmentFirstBaseline,
UIStackViewAlignmentLastBaseline,
// 對齊方式,需要對應(yīng)少量設(shè)置
*/
self.stackView.spacing = 20.;// 間距。 某幾種布局有效,優(yōu)先級不是很高,
其他
// self.stackView.layoutMarginsRelativeArrangement = YES;// ??
// self.stackView.baselineRelativeArrangement = YES;// ??