美文网首页
UIStackView结合UIScrollView 约束滚动布局

UIStackView结合UIScrollView 约束滚动布局

作者: 桃李不言的蹊 | 来源:发表于2020-06-22 23:27 被阅读0次

    UIStackView结合UIScrollView 约束滚动布局

    最近项目放弃了iOS8,开始使用StackView,愉快的撸起来了。

    我们都知道使用UIScrollView结合一个contentView的布局约束滚动的如下:

    UIScrollView *scrollview = [[UIScrollView alloc] init];

        [self.view addSubview:scrollview];

        [scrollview mas_makeConstraints:^(MASConstraintMaker *make) {

            make.edges.equalTo(self.view);

        }];

        UIView*contentView = [[UIView alloc]init];

        [scrollview addSubview:contentView];

        [contentView mas_makeConstraints:^(MASConstraintMaker *make) {

            //左右要约束能计算出宽度

            make.left.right.equalTo(self.view);

            //top要相对于ScrollView

            make.top.equalTo(scrollview);

            make.bottom.equalTo(scrollview);

        }];

        UIView*firstView = [[UIView alloc]init];

        firstView.backgroundColor = [UIColor lightGrayColor];

        [contentView addSubview:firstView];

        [firstView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.equalTo(contentView);

            make.top.equalTo(contentView);

            make.height.mas_equalTo(400);

        }];

        UIView*secondView = [[UIView alloc]init];

        secondView.backgroundColor = [UIColor yellowColor];

        [contentView addSubview:secondView];

        [secondView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.equalTo(firstView);

            make.top.equalTo(firstView.mas_bottom);

            make.height.mas_equalTo(400);

        }];

        UIView*thirdView = [[UIView alloc]init];

        thirdView.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];

        [contentView addSubview:thirdView];

        [thirdViewmas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.equalTo(secondView);

            make.top.equalTo(secondView.mas_bottom);

            make.height.mas_equalTo(400);

        }];

        UIView*forthView = [[UIView alloc]init];

        forthView.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];

        [contentView addSubview:forthView];

        [forthView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.equalTo(thirdView);

            make.top.equalTo(thirdView.mas_bottom);

            make.height.mas_equalTo(400);

            make.bottom.equalTo(contentView);

        }];

    使用UIStackView其实就是换掉上面的contentView,只要ScrollView的约束能让其知道宽高,就能滚动起来。而StackView可以让我们省略子视图宽高方向的约束。代码如下:

    UIScrollView *scrollview = [[UIScrollView alloc] init];

        [self.view addSubview:scrollview];

        [scrollview mas_makeConstraints:^(MASConstraintMaker *make) {

            make.edges.equalTo(self.view);

        }];

        UIStackView *stackView = [[UIStackView alloc] init];

        stackView.axis = UILayoutConstraintAxisVertical;

        stackView.distribution=0;

        //靠左对齐  不设置就是子控件和父控件的宽度一样

        stackView.alignment = UIStackViewAlignmentLeading;

        stackView.spacing=15;

        [scrollview addSubview:stackView];

        [stackView mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.right.equalTo(self.view);

            make.top.bottom.equalTo(scrollview);

        }];

        UILabel*firstLab = [[UILabel alloc]init];

        firstLab.backgroundColor = [UIColor lightGrayColor];

        firstLab.text = @"1111111111fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf1111111111111111111111111111fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf1111111111fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf1111111111fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf";

        firstLab.numberOfLines=0;

        [stackView addArrangedSubview:firstLab];

        UILabel*secondLab = [[UILabel alloc]init];

        secondLab.backgroundColor = [UIColor yellowColor];

        secondLab.text = @"111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf111\nfhwoefhwofhowefh\nfwjeohfwofhowe\n\n22222222222fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf";

        secondLab.numberOfLines=0;

        [stackView addArrangedSubview:secondLab];

        UILabel*thirdLab = [[UILabel alloc]init];

        thirdLab.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];

        thirdLab.text = @"33333333333333333333";

        thirdLab.numberOfLines=0;

        [stackView addArrangedSubview:thirdLab];

        UILabel*forthLab = [[UILabel alloc]init];

        forthLab.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];

        forthLab.text = @"4444444444444444444444fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf4444444444444444444444444444444444444444444444fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf4444444444444444444444444444444444444444444444fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf4444444444444444444444444444444444444444444444fwehfowefhowfhwoefhwoefiiiiiiiiiiiiiiiiiiwfowfhwofhwoefhwof\nwfehowfhwoehfowhfowf\nwfjhowfhwofhwofhowehfowfhwfwf444444444444444444444444";

        forthLab.numberOfLines=0;

        [stackView addArrangedSubview:forthLab];

    相关文章

      网友评论

          本文标题:UIStackView结合UIScrollView 约束滚动布局

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