IOS使用AutoLayout让UIScrollView自动计算ContentSize

打印 上一主题 下一主题

主题 948|帖子 948|积分 2844

在IOS的界面开发中,布局方式存在分裂的两种局面。
早入行的iOS开发者,基本上都是手动计算各种高度。但是从web或者Android转过去的学习iOS的开发者,基本上都很难适应这种手动计算的方式,更加偏向使用autolayout去做布局。
实际上 iPhone6之后,iOS设备出现多种分辨率之后,苹果也推荐大家使用autolayout去写界面。
看了几本iOS的书籍,基本的都是直接设置一个固定的contentSize给UIScrollView就完事了,也不考虑高度不固定的情况。
网上搜索了一堆,也没看到一个正常一点的例子。
切入主题

思路:创建一个UIScrollView,然后直接把子View的下边的约束依赖到UIScollView的底部,
然后就ok了
上代码
  1. // 1
  2. var scrollView : UIScrollView = {
  3.         let v = UIScrollView(frame: .zero)
  4.         v.backgroundColor = UIColor.systemGray
  5.         return v;
  6.     }();
  7.        
  8.         // 2.
  9.         self.view.addSubview(scrollView)
  10.        
  11.         // 3.设置UIScrollView的默认宽高约束
  12.         scrollView.snp.makeConstraints { make in
  13.             make.leading.equalTo(view.safeAreaLayoutGuide.snp.leading)
  14.             make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
  15.             make.trailing.equalTo(view.safeAreaLayoutGuide.snp.trailing)
  16.             make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
  17.         }
  18.         // 4. 创建子View
  19.          let v = UIView();
  20.         v.backgroundColor = UIColor.systemCyan
  21.         scrollView.addSubview(v)
  22.         v.snp.makeConstraints { make in
  23.             make.width.equalTo(200)
  24.             make.height.equalTo(3000)
  25.             make.leading.equalToSuperview()
  26.             make.top.equalToSuperview()
  27.             make.bottom.equalTo(scrollView.snp.bottom) // 重点就是这一句。让子View的bottom依赖到UIScrollView的bottom。就可以直接滚动了
  28.         }
  29.        
复制代码
参考

https://stackoverflow.com/questions/48216808/programmatic-uiscrollview-with-autolayout


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表