在StoryBord拖過ScrollView搜骡,添加約束的時候發(fā)現(xiàn)他并不會按照你猜想的去執(zhí)行怀读。這是由于scrollView本身ContentSize戳晌、contentInsets等復(fù)雜的特性導(dǎo)致沪停,蘋果文檔在講autoLayout的時候甚至專門拿出一節(jié)講如何對scrollView進(jìn)行自動布局秒旋。
解決方案:可以給ScrollView添加一個唯一的子視圖约计,大小和ScrollView一樣,然后所有原計劃添加到ScrollView上面的控件都添加在子視圖上面迁筛。
步驟如下:
1.首先在我們的Controller自帶的View里面添加一個ScrollView煤蚌,點開下面設(shè)置約束的4個按鈕的第2個,約束設(shè)置距離父視圖的距離為(0细卧,0尉桩,0,0)
2.在ScrollView上面添加一個View成為ScrollView的子視圖贪庙,點開下面設(shè)置約束的4個按鈕的第2個蜘犁,設(shè)置約束距離ScrollView的距離為(0,0止邮,0这橙,0)
3.這個時候會發(fā)現(xiàn)報錯了,不用緊張导披,先不用管它屈扎,咱們繼續(xù)往下走。
4.點開下面設(shè)置約束的4個按鈕的第一個盛卡,選擇Horizontal Center in Container助隧,并上對勾,(如果想要左右滑動就選擇Vertical Center in Container滑沧,同時實現(xiàn)左右上下則全不選)
5.再次打開下面設(shè)置約束的4個按鈕的第2個 選擇Height設(shè)置你想要的667.(如果想要左右滑動就選擇Width并村,同時實現(xiàn)左右上下就全部設(shè)置)這個高度是以后運(yùn)行后scroller的ContentSize
6.設(shè)置完成以后發(fā)現(xiàn)錯誤不見了,只有一個黃色的警告滓技,這是由于Frame沒有更新導(dǎo)致的哩牍,我們來更新一個Frame。
7.接下來我們就可以在這個ScrollView的子視圖View上面來添加控件了令漂。設(shè)置約束的時候是相對于父視圖View的哦膝昆。
8.運(yùn)行程序丸边,發(fā)現(xiàn)現(xiàn)在已經(jīng)可以滑動了
[注]上面的View是設(shè)置的一個固定的一個值。如果想要動態(tài)的設(shè)置荚孵,就需要把我們剛才加的高度的約束設(shè)置成屬性
http://img.blog.csdn.net/20150625121759350?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHg4NzQ4Mjg1MDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
起一個名字妹窖, height; 然后重寫 -(void)updateViewConstraints 方法收叶,在調(diào)用super 后 動態(tài)的設(shè)置height這個約束的constant屬性骄呼。
http://img.blog.csdn.net/20150625121745784?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHg4NzQ4Mjg1MDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
這樣你會發(fā)現(xiàn)ScrollView可滑動的幅度會在每次運(yùn)行后都不一樣哦~;