UIScrollView与Auto layout如何进行屏幕适配

  • 前序

本文仅是作者参考网上一些文章后自己做的一些总结,没有讨论约束的详细方式,因为使用Xcode图形界面以及第三方的Masonry都可以,理论叙述得不是很多,更多的是一种使用方式,仅供参考,如有指教,欢迎提出

  • 重要概念

在对UIScrollView进行屏幕适配的时候,其ContentSize是通过设置UIScrollView与SubViews之间的约束来确定大小的

  • 两个基本准则
  • UIScrollView的ContentSize是根据subviews所占据的size来计算的。因此我们如果通过设置UIScrollView的布局约束来设置ContentSize是没有用的,我们只需要将subviews的size都明确下来。这条原则自然不成问题,当然,如果ContentSize的内容不足以布满整个UIScrollView时,滚动条将不会出现,UIScrollView也不会滚动。
  • subviews的size不能依赖于UIScrollView。很简单,因为原则1:UIScrollView的size(当然这里的Size均指的是ContentSize)赖于subviews。如果subviews的size再依赖于UIScrollView,则布局引擎就混乱了
  • 正确步骤如下:(此步骤仅为建议步骤)
  • 1.往界面上面添加一个UIScrollView
  • 2.设置好UIScrollView相对于其父视图的约束,例如Pin上下左右都为0,将占满整个屏幕
  • 3.插入一个你自己的View,不妨将他命名为containView,然后约束他的宽和高,使他能够装下你想添加的控件即可,例如:width 等于ViewController’s view 的width,height等于800。
  • 4.重点来了,设置之前那个ContainView相对UIScrollView的Pin约束,使其上下左右都为0,很多朋友都会觉得之前已经设置好了View的宽和高,那么整个UIScrollView的ContentSize就应该计算出来了,但事实就是要是你不做这一步,你的UIScrollView是划不动的,(这个解释来自于网上,具体为何我也想得不是很明白)总之必须得做这件事
  • 5.剩下的事情就简单了,按照正常的布局,将containView作为父view,随意的往上面添加你想要的控件就行了,并设置约束,当然,这些约束都只是和ContainView相关,没有和UIScrollView相关。不然又会导致布局冲突。
  • 参考资料:
  • http://blog.csdn.net/kmyhy/article/details/41827985
  • http://adad184.com/2015/12/01/scrollview-under-autolayout/

你可能感兴趣的:(UIScrollView与Auto layout如何进行屏幕适配)