有关被管理视图的添加与移除:
//初始化方法,通过数组传入被管理的视图
- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views;
//获取被管理的所有视图
@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews;
//添加一个视图进行管理
- (void)addArrangedSubview:(UIView *)view;
//移除一个被管理的视图
- (void)removeArrangedSubview:(UIView *)view;
//在指定位置插入一个被管理的视图
- (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex;与StackView布局设置相关:
1.布局模式:
@property(nonatomic) UILayoutConstraintAxis axis;上面这个属性用于设置布局的模型,枚举如下:
//stackView只有两种布局模式 水平和竖直
typedef NS_ENUM(NSInteger, UILayoutConstraintAxis) {
//水平布局
UILayoutConstraintAxisHorizontal = 0,
//竖直布局
UILayoutConstraintAxisVertical = 1
};2.对齐模式:
@property(nonatomic) UIStackViewAlignment alignment;这个属性用于设置控件的对其模式,枚举如下:
typedef NS_ENUM(NSInteger, UIStackViewAlignment) {
//水平布局时为高度充满,竖直布局时为宽度充满
UIStackViewAlignmentFill,
//前边对其
UIStackViewAlignmentLeading,
//顶部对其
UIStackViewAlignmentTop = UIStackViewAlignmentLeading,
//第一个控件文字的基线对其 水平布局有效
UIStackViewAlignmentFirstBaseline,
//中心对其
UIStackViewAlignmentCenter,
//后边对其
UIStackViewAlignmentTrailing,
//底部对其
UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing,
//基线对其,水平布局有效
UIStackViewAlignmentLastBaseline,
} NS_ENUM_AVAILABLE_IOS(9_0);在上面的例子中,我们设置了对其方式为充满,这样的话,我们就不需要再做过多控件尺寸的约束,如果我们被管理的控件高度或者宽度不一,我们可以设置中心对其,这样的话,我们还需要为每个控件添加一个宽度或者高度的约束,如下:
NSMutableArray * array = [[NSMutableArray alloc]init];
for (int i =0 ; i<5; i++) {
UIView * view = [[UIView alloc]init];
view.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1];










