IOS使用AutoLayout让UIScrollView自动计算ContentSize
在IOS的界面开发中,布局方式存在分裂的两种局面。
早入行的iOS开发者,基本上都是手动计算各种高度。但是从web或者Android转过去的学习iOS的开发者,基本上都很难适应这种手动计算的方式,更加偏向使用autolayout去做布局。
实际上 iPhone6之后,iOS设备出现多种分辨率之后,苹果也推荐大家使用autolayout去写界面。
看了几本iOS的书籍,基本的都是直接设置一个固定的contentSize给UIScrollView就完事了,也不考虑高度不固定的情况。
网上搜索了一堆,也没看到一个正常一点的例子。
切入主题
思路:创建一个UIScrollView,然后直接把子View的下边的约束依赖到UIScollView的底部,
然后就ok了
上代码
// 1
var scrollView : UIScrollView = {
let v = UIScrollView(frame: .zero)
v.backgroundColor = UIColor.systemGray
return v;
}();
// 2.
self.view.addSubview(scrollView)
// 3.设置UIScrollView的默认宽高约束
scrollView.snp.makeConstraints { make in
make.leading.equalTo(view.safeAreaLayoutGuide.snp.leading)
make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
make.trailing.equalTo(view.safeAreaLayoutGuide.snp.trailing)
make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
}
// 4. 创建子View
let v = UIView();
v.backgroundColor = UIColor.systemCyan
scrollView.addSubview(v)
v.snp.makeConstraints { make in
make.width.equalTo(200)
make.height.equalTo(3000)
make.leading.equalToSuperview()
make.top.equalToSuperview()
make.bottom.equalTo(scrollView.snp.bottom) // 重点就是这一句。让子View的bottom依赖到UIScrollView的bottom。就可以直接滚动了
}
参考
https://stackoverflow.com/questions/48216808/programmatic-uiscrollview-with-autolayout
分类:
IOS学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)