/*
//位置初始化
- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
//根据子视图 初始化
- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views; // Adds views as subviews of the receiver.
//存放子视图的数组
@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews;
//子视图添加到UIStackView上的方法
- (void)addArrangedSubview:(UIView *)view;
//子视图从列表中移除排列子视图而不删除它,若要删除作为子视图视图,将其发送-removeFromSuperview 像往常
- (void)removeArrangedSubview:(UIView *)view;
//如果它不是已经将视图添加作为容器的子视图。
更新的堆栈索引 (但不是子视图索引)
如果它已经在 arrangedSubviews 列表中,排列子视图。
- (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex;
//排列方式
UILayoutConstraintAxisHorizontal = 0,//水平
UILayoutConstraintAxisVertical = 1//竖直
@property(nonatomic) UILayoutConstraintAxis axis;
//填充方式吧
@property(nonatomic) UIStackViewDistribution distribution;
//对齐方式
@property(nonatomic) UIStackViewAlignment alignment;
//间隔
@property(nonatomic) CGFloat spacing;
@property(nonatomic,getter=isBaselineRelativeArrangement) BOOL baselineRelativeArrangement;
@property(nonatomic,getter=isLayoutMarginsRelativeArrangement) BOOL layoutMarginsRelativeArrangement;
*/
UIStackView * stackView =[[UIStackView alloc]initWithFrame:CGRectMake(0, 0, 220, 200)];
/*
Axis表示Stack View的subview是水平排布还是垂直排布。Alignment控制subview对齐方式。Distribution定义subview的分布方式。Spacing 为subview间的最小间距。
*/
//竖直排列
stackView.distribution = UIStackViewDistributionFillEqually ;
stackView.axis =UILayoutConstraintAxisVertical;
//对齐方式
// stackView.alignment = UIStackViewAlignmentLeading;
//添加到视图上
[self.view addSubview:stackView];
/*
subView和arrangedSubView
开始使用Stack View前,我们先看一下它的属性subViews和arrangedSubvies属性的不同。如果你想添加一个subview给Stack View管理,你应该调用addArrangedSubview:或insertArrangedSubview:atIndex: arrangedSubviews数组是subviews属性的子集。
要移除Stack View管理的subview,需要调用removeArrangedSubview:和removeFromSuperview。移除arrangedSubview只是确保Stack View不再管理其约束,而非从视图层次结构中删除,理解这一点非常重要。
*/
//创建控件
UILabel * label1 =[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
label1.backgroundColor =[UIColor redColor];
[stackView addArrangedSubview:label1];
UILabel * label2 =[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
label2.backgroundColor =[UIColor greenColor];
[stackView addArrangedSubview:label2];
UIStackView 详解 代码实现
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.