手写代码解决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)

手写代码解决UIScrollView AutoLayout 问题._第1张图片
屏幕快照 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!

你可能感兴趣的:(手写代码解决UIScrollView AutoLayout 问题.)