在作項目的過後有一個註冊頁面,爲了適配屏幕採用了StoryBoard,添加約束之後運行後發現一個問題。 在4.0 甚至更大的屏幕下是沒有問題的,以下圖(4.0屏幕)佈局
可是放到更小的3.5英寸就會出現問題,發現下面的按鈕不見了,主要緣由是輸入框太多,致使更個屏幕放不下更多。如圖(3.5)英寸blog
想了下就決定用ScrolleView, ContentSize能夠設置爲560. 這樣在其餘屏幕上沒有太多的影響,在3.5的屏幕下也能夠滑動了。可是在StoryBord拖過ScrollView,添加約束的時候發現他並不會按照你猜測的去執行。通過查閱資料,大體知道了緣由。這是因爲scrollview自己contentSize、contentInsets等複雜的特性致使,蘋果文檔在講autolayout的時候甚至專門拿出一節講如何對scrollview進行自動佈局。解決方案能夠給ScrollView添加一個惟一的子視圖,大小和ScrollView同樣,而後全部原計劃添加到ScrollView上面的控件,都添加在子視圖上面。步驟以下:1.首先在咱們的Controller自帶的View裏面添加一個ScrollView,點開下面設置約束的4個按鈕的第2個,約束設置距離父試圖的距離爲(0,0,0,0)以下圖所示。文檔
2.在ScrollView上面添加一個View成爲ScrollView的子視圖,點開下面設置約束的4個按鈕的第2個,設置約束距離ScrollView的距離爲(0.0.0.0)以下圖所示。 date
3.這個時候會發現報錯了,不用緊張~, 先不用管它,我們繼續往下走autolayout
。 scroll
4.點開下面設置約束的4個按鈕的第一個,選擇 Horizontal Center in Container, 並打上對勾, (若是想要左右滑動就選擇 Vertical Center in Container, 同時實現左右上下則全不選) 程序
5.再次打開下面設置約束的4個按鈕的第2個 選擇Height 設置你想要的560. (若是想要左右滑動就選擇 Width, 同時實現左右上下就所有設置)(這個高度是之後運行後Scroller的ContentSize) 方法
6.設置完成之後發現錯誤不見了,只有一個黃色的警告,這是因爲Frame沒有更新致使的,咱們來更新下Frame。im
7.接下來咱們就能夠在這個ScrollView的子視圖View上面來添加控件了。 設置約束的時候是相對於父試圖View的哦~。佈局。layout
8.運行程序,發如今3.5屏幕已經能夠滑動了, 而在4.0屏幕仍是和原來同樣 圖:左3.5, 右4.0
附:上面的View是設置的固定的一個值。 若是想要動態的設置,就須要把咱們剛纔加的高度的約束設置成屬性
起一個名字, height; 而後重寫 -(void)updateViewConstraints 方法,在調用super 後 動態的設置height這個約束的constant屬性。
這樣你會發現ScrollView可滑動的幅度會在每次運行後都不同哦~;