在使用storyboard和xib時,咱們常常要用到ScrollView,還有自動佈局AutoLayout,可是ScrollView和AutoLayout 結合使用,相對來講有點複雜。根據實踐,我說一下個人理解,在故事板或xib中,ScrollView是根據其下面的一個View的大小來肯定ContentSize的大小。佈局
看一下效果.net
1. 建立一個項目,拖拽一個ScrollView到故事板中,以下圖get
2. 選中ScrollView,添加約束。date
3. 拖拽一個View到ScrollView上, 而後添加上下左右四周約束。下載
4.添加完以後, 可能會報一個錯, 以下圖, 這個暫時別去管。 方法
5. 咱們先肯定一下, 咱們是須要水平方向的滾動仍是豎直方向的滾動,或者水平方向和豎直方向都須要滾動。im
a.水平方向和豎直方向都須要滾動的話, 不用添加拖拽
b.水平方向滾動須要添加下面一個約束demo
c.豎直方向須要添加下面一個約束項目
6.咱們以水平方向滾動爲例, 咱們須要肯定咱們想要的寬度, 添加一個固定的寬度的約束。
7.選中View, 更新一下Frame
8.若是是想要動態設置ScrollView的寬度,也就是設置View的寬度約束的值, 咱們將其拉成屬性, 而後修改其值。
9. 若是是肯定的寬度, 能夠在- (void)updateViewConstraints這個方法中修改,也能夠在別處修改。
10.如今運行,就能夠水平滾動了。 豎直方向的滾動和水平方向滾動的設置差很少。 咱們來添加兩個View, 先拖拽一個View(我設爲灰色)到視圖上, 而後添加約束, 以下圖
11.再拖拽一個View, 背景顏色設爲紅色,設置好以後, 將frame設置到咱們須要的, 我這邊將X設置到600。
12.咱們給第二個View添加約束,以下圖
13.咱們還須要設置一個約束, 就是第二個View距離SuperView的距離,就是第二個View的Leading約束
14.而後將這個約束Leading拉成屬性,在- (void)updateViewConstraints設置他的值
以下圖
這樣子就OK了。
自動佈局須要本身去多多實踐, 有不少細節須要注意的。
這個例子的demo地址:http://download.csdn.net/detail/h1101723183/8253159
豎直方向的Demo下載地址在 http://download.csdn.net/detail/h1101723183/8266503