UIStackView 详解 代码实现

 /*
      //位置初始化
     - (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];
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章