惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
U
Unit 42
B
Blog RSS Feed
博客园 - 【当耐特】
T
Tailwind CSS Blog
V
V2EX
S
SegmentFault 最新的问题
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
量子位
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
P
Proofpoint News Feed
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
About on SuperTechFans

Dvel's Blog

Rime 全拼双拼混输 CHD 油猴脚本:每日签到自动答题 Rime 配置:雾凇拼音 Hammerspoon 自动切换输入法 修复 Hugo 本地图片的累计布局偏移(CLS)问题 macOS 利用 Karabiner 修改 Emacs 键位为 Vim 键位 macOS 修改 Emacs 键位为 Vim 键位 Surge 配置 汉字的混乱 Netflix 中英双语字幕的好办法 优化 Rime 英文输入体验 判断字符是否为简体字或繁体字 Cloudflare 转入域名提示「出现了问题。请重试转移此域。尚未向您收费。」 图片压缩:Squoosh、TinyPNG、ImageOptim、WebP macOS grep + sed 批量替换多个文件的内容 在 macOS 根目录创建文件夹 博客图床小妙招 折腾 Hugo & PaperMod 主题 利用 Cloudflare Workers 进行批量 301 重定向 将博客部署在 Cloudflare Pages Alfred File Navigation(文件导航器)详解 在 Hugo Goldmark Markdown 中设置以新标签打开链接 日期与时间(UTC、GMT、时间戳、时区) 让 Alfred 以新标签的方式打开 Finder 用 git filter-branch 给 Git 仓库瘦身 qBittorrent 设置教程 联通光猫破解+桥接记录 配置 Mac 终端走代理 Steam for Mac 中文游戏推荐 我的 Mac 软件/工具列表
UIScrollView 中使用 Masonry
Dvel · 2017-04-25 · via Dvel's Blog

昨天耽误了一阵子在 scrollView 的布局上,记录一下。

如果可以提前确定 scrollViewcontentSize,就简单多了,但这种情况很少。

一般还是按照 subViews 自适应的比较合适,这样就需要一个 containerView 来撑起 scrollViewcontentSize

简单的代码示例:

UIScrollView *scrollView = [UIScrollVie new];
[self.view addSubview:scrollView];
                            
UIView *containerView = [UIView new];
[scrollView addSubview:containerView];
                            
UIView *v1 = [UIView new];
v1.backgroundColor = [UIColor redColor];
[containerView addSubview:v1];
                            
UIView *v2 = [UIView new];
v2.backgroundColor = [UIColor blueColor];
[containerView addSubview:v2];
                
/*
如上,我想让v1、v2纵向排列,让scrollView可以上下滚动。
*/

// scrollView正常进行约束
[scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.view);
}];
                      
// 容器视图
[containerView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.width.equalTo(scrollView); // 试了发现这里好像必须要约束一下width
}];
                      
// v1、v2都放在容器里
[v1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.left.right.equalTo(containerView);
    make.height.equalTo(@400);
}];
[v2 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(v1.mas_bottom);
    make.left.right.equalTo(v1);
    make.height.equalTo(@400);
}];

// 这里需要补刀,来撑起contentSize
[containerView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.bottom.equalTo(v2);
}];