美文网首页iOS-swiftiOS移动开发swift
1.IOS(swift)-autolayout 与 scroll

1.IOS(swift)-autolayout 与 scroll

作者: 俊瑶先森 | 来源:发表于2015-05-27 22:01 被阅读507次

    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 与 scroll

        本文链接:https://www.haomeiwen.com/subject/nvmrqttx.html