博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIScrollView+Masonry 解决view展示异常
阅读量:5848 次
发布时间:2019-06-19

本文共 2045 字,大约阅读时间需要 6 分钟。

原因:

UIScrollView的leading、 trailing、top、bottom属性由ContentSize决定

ContentSize是根据子视图决定,相互依赖无法正常布局

例:

UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];    UIView * view1 = [[UIView alloc] init];    view1.backgroundColor = [UIColor redColor];        UIView * view2 = [[UIView alloc] init];    view1.backgroundColor = [UIColor blueColor];        [scrollView addSubview:view1];    [scrollView addSubview:view2];    [self.view addSubview:scrollView];        [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make){        make.edges.mas_equalTo(UIEdgeInsetsZero);    }];        [view1 mas_makeConstraints:^(MASConstraintMaker *make) {        make.top.left.right.bottom.offset(0);        make.mas_equalTo(view2.mas_bottom);    }];        [view2 mas_makeConstraints:^(MASConstraintMaker *make) {        make.top.left.right.bottom.offset(15);    }];复制代码

解决:

创建一个大小等于其ContentSize的View覆盖到ScrollView上

其他子视图添加到这个View上

UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];        UIView * containView = [[UIView alloc] init];    containView.backgroundColor = [UIColor greenColor];        UIView * view1 = [[UIView alloc] init];    view1.backgroundColor = [UIColor redColor];        UIView * view2 = [[UIView alloc] init];    view1.backgroundColor = [UIColor blueColor];        [containView addSubview:view1];    [containView addSubview:view2];    [scrollView addSubview:containView];    [self.view addSubview:scrollView];        [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make){        make.edges.mas_equalTo(UIEdgeInsetsZero);    }];        [containView mas_makeConstraints:^(MASConstraintMaker *make) {        make.edges.equalTo(scrollView);        make.width.height.equalTo(scrollView);    }];        [view1 mas_makeConstraints:^(MASConstraintMaker *make) {        make.top.left.right.bottom.offset(0);        make.mas_equalTo(view2.mas_bottom);    }];        [view2 mas_makeConstraints:^(MASConstraintMaker *make) {        make.top.left.right.bottom.offset(15);    }];复制代码

转载地址:http://kjkjx.baihongyu.com/

你可能感兴趣的文章
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
建立备份策略的重要性
查看>>
发力IoT领域 Marvell注重生态系统发展
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
Spring解析
查看>>
python中str和repr区别
查看>>
RedHat6 管理应用服务【11】
查看>>
stm32F10x复习-1
查看>>
[转] vue异步处理错误
查看>>
CSS 3D动画概述菜鸟级解读之一
查看>>
kindeditor.net应用
查看>>
函数preg_replace()与str_replace()
查看>>
HTTP工具CURL的使用简介
查看>>
P2P的远程协助系统技术分析[转]
查看>>
在.NET开发中的单元测试工具之(1)——NUnit
查看>>
windows2008支持多用户同时登录
查看>>
UEditor 1.2.5 for java 自定义配置
查看>>
从Redis的数据丢失说起
查看>>