美文网首页
UIStackView+AutoLayout自适应内容

UIStackView+AutoLayout自适应内容

作者: init123 | 来源:发表于2020-07-17 22:33 被阅读0次

    以自适应高度为例

    要求subviews 左对齐,宽度自定义,高度适应内容,如图:


    未命名.png
           let stack =UIStackView(frame: .zero)
            stack.translatesAutoresizingMaskIntoConstraints = false
            stack.axis= .vertical
            stack.alignment= .leading
            stack.distribution= .fill;
            stack.spacing=10;
            self.view.addSubview(stack);
    
            var cons0 = [NSLayoutConstraint]()
            let views0 = ["view": stack]
            cons0+=NSLayoutConstraint.constraints(withVisualFormat:"H:|-10-[view]-10-|", options: [], metrics:nil, views: views0)
            cons0+=NSLayoutConstraint.constraints(withVisualFormat:"V:|-110-[view]", options: [], metrics:nil, views: views0)
            NSLayoutConstraint.activate(cons0)
    
            let view1 = UIView(frame: .zero)
            view1.translatesAutoresizingMaskIntoConstraints = false;
            view1.backgroundColor = UIColor.red;
            stack.addArrangedSubview(view1)
    
            let view2 =UIView(frame: .zero)
            view2.translatesAutoresizingMaskIntoConstraints = false;
            view2.backgroundColor = UIColor.green;
            stack.addArrangedSubview(view2)
    
            let view3 =UIView(frame: .zero)
            view3.translatesAutoresizingMaskIntoConstraints = false;
            view3.backgroundColor = UIColor.blue;
            stack.addArrangedSubview(view3)
    
    //设置宽高
            var cons = [NSLayoutConstraint]()
            let views = ["view1": view1,"view2": view2,"view3": view3]
            cons+=NSLayoutConstraint.constraints(withVisualFormat:"H:[view1(==80)]", options: [], metrics:nil, views: views)
            cons+=NSLayoutConstraint.constraints(withVisualFormat:"H:[view2(==180)]", options: [], metrics:nil, views: views)
            cons+=NSLayoutConstraint.constraints(withVisualFormat:"H:[view3(==120)]", options: [], metrics:nil, views: views)
    //以下因为UIView默认的intrinsicContentSize为0,0所以要设置高度。
    //若自定义View,可自行实现intrinsicContentSize,则不需要设置以下的高度约束
          cons += NSLayoutConstraint.constraints(withVisualFormat: "V:[view1(==30)]", options: [], metrics: nil, views: views)
            cons += NSLayoutConstraint.constraints(withVisualFormat: "V:[view2(==60)]", options: [], metrics: nil, views: views)
            cons += NSLayoutConstraint.constraints(withVisualFormat: "V:[view3(==90)]", options: [], metrics: nil, views: views)
            NSLayoutConstraint.activate(cons)
    

    相关文章

      网友评论

          本文标题:UIStackView+AutoLayout自适应内容

          本文链接:https://www.haomeiwen.com/subject/vytohktx.html