手写代码解决UIScrollView AutoLayout 问题.

相对于普通的View来说, UIScrollView 的AutoLayout 比较特殊.因为它的 left/right/top/bottom space 是相对于 UIScrollView的 contentSize 而不是 bounds 来确定的.如果你尝试用 UIScrollView和它 subview 的left/right/top/bottom 来互相决定大小的时候,系统会警告你"Has ambiguous scrollable content width/height".

解决方法:
step 1 : 在scrollView和它的subviews之间,先添加一个 containView,对齐scrollview的top & leading边界, scrollView的width &height 对齐containView,从而使scrollView 的 contentSize确定下来. (contentSize的大小等于containView.size)

屏幕快照 2016-04-28 下午11.53.07.png

step 2:保存下面的NSLayoutConstraint,如果scrollView的宽度变化(如:网络请求回来的内容增加了),则需要更新此约束.


屏幕快照 2016-04-28 下午11.54.00.png

step3: 添加scrollView 和它的superView 约束


屏幕快照 2016-04-29 上午12.12.47.png

(self.view)

"Talk is cheap? "
使用storyboard来实现的例子,有好多在网上了.请自行google.
OK, 我们不使用storyboard, 用纯代码实现它
例子代码:https://github.com/dgutyanghs/UIScrollView-AutoLayout-NotUse-Storyboard

I hope this example will help you, enjoy it!

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

推荐阅读更多精彩内容