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

示例下载:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容