StoryBoard下ScrollView如何添加約束

在作項目的過後有一個註冊頁面,爲了適配屏幕採用了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可滑動的幅度會在每次運行後都不同哦~;

相關文章
相關標籤/搜索