美文网首页
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