Autolayout与UIScrollView

在iOS开发中的Autolayout比较盛行时,需要掌握一些自动布局的技巧。其中属ScrollView的自动布局比较复杂。如下,在正常的View进行如下的布局,没有一点错误,非常的正常。

View中对View的Autolayout

但是看看在ScrollView中对View同样的布局(如下),可以看到明晃晃的错误信息,他提示的错误信息是ScrollView has ambiguous scrollable content height,主要原因是因为ScrollView中有一个ContentSize(可滚动的范围大小),所以在布局的时候也需要考虑,亦对view做的约束也承担着确定ContentSize的大小。

ScrollView错误的布局

补齐约束,如下,增加一个到bottom约束(确定ContentSize的height),横向的ContentSize.Width = 67 + 240 + 68
ContentSize.Height = 164 + 150 + 80
你一定会吃惊为什么到bottom才80,为什么看着那么长,不用介意,这只是为了确定ContentSize的Height。

ScrollView中补齐约束后的约束图

当然除了View在ScrollView中,还有很多控件是需要在运行时候才能确定控件的大小的,如UILable和UIImageView。比如UIImageView可以用图片来确定ImageView的width和height大小

图片确定width和height

但是有些时候图片是从后台下载回来的,我们不能在designed的时候就知道它的大小,所有此时需要用一个占位size,苹果也为我们提供了方法,在Intrinsic Size中设置,选择PlaceHoder。它仅仅只是在设计的时候给一个大小,而运行时才真正确定实际大小

占位大小-设计

使用占位的UIImageview


使用了占位size的UIImageview

对于Autolayout的使用,都是在实践中慢慢的熟练起来的,打开Xcode多练习几次就好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目里的布局一直都是纯代码流,顺带着Autolayout也一直没有使用,直到遇到了masonry,让我看到了希望,...
    小笨狼阅读 9,307评论 25 128
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • 人怎么能活得明白? 我不知道为什么自己总是在想这种精神病类的东西,但我就是想知道,我的人生至此如何能够改变到我希望...
    paradox_haoyu阅读 175评论 0 0
  • 计划的确没有变化快。今天上午体检,我对象昨天跟我说了,但是我写计划时把这件事情给忘了,所以我感到生活中,我被一些琐...
    bdec4e2f6612阅读 540评论 0 51
  • 文 /顾空城 (一) 坐了一夜大巴,终于回到了思念已久的家。 一年过去了,这里的一切都没有什么改变。餐桌还是靠近窗...
    顾空城阅读 777评论 4 13