1.IOS(swift)-autolayout 与 scrollView

UIScrollView 和 Auto Layout

iPhone 5 刚出来的时候,大部分不支持横屏的 App 都不需要做太多的适配工作,因为屏幕宽度没有变,table view多个cell也不需要加 code。但是在iPhone 6和iPhone 6 Plus发布以后,多分辨率适配终于不再是Android开发的专利了。于是,从 iOS 6 起就存在的 Auto Layout 终于有了用武之地。

在Auto Layout是一个很特殊的 view,对于 UIScrollView的 subview 来说,它的leading/trailing/top/bottom space是相对于UIScrollView的contentSize而不是bounds来确定的,所以当你尝试用 UIScrollView和它 subview 的leading/trailing/top/bottom来互相决定大小的时候,就会出现「Has ambiguous scrollable content width/height」的 warning。

正确的姿势是用UIScrollView外部的view或UIScrollView本身的width/height确定subview的尺寸,进而确定contentSize。因为 UIScrollView本身的leading/trailing/top/bottom变得不好用,所以我习惯的做法是在UIScrollView和它原来的subviews之间增加一个content view,这样做的好处有:

  1. 不会在 storyboard里留下 error/warning为subview提供leading/trailing/top/bottom,方便subview的布局
  2. 通过调整content view的size(可以是 constraint 的 IBOutlet)来调整 contentSize
  3. 不需要hard code与屏幕尺寸相关的代码
  4. 更好地支持rotation

示例下载:

你可能感兴趣的:(1.IOS(swift)-autolayout 与 scrollView)