天天看點

使用autoLayout布局ScrollView(内嵌多個TableView)的一些小結

實習離職在宿舍,當然也不能閑着,把一些常用的、自己還不太熟悉的東西搞一搞。

首先注意ScrollView的自動布局是特殊的,不僅需要drag一些限制來确定其自身的位置,大小(x, y, width, height),還需要在storyboard中确定其ContentSize的大小。

通常來講

1.ScrollView沒有固定的高度、寬度。一般都是與SuperView發生聯系(eg:距離父控件上下左右均為零)

2.ScrollView中内容較多時,為了簡化布局,采用化整為零的做法,将原本ScrollView中的多個子View放到一個ContentView(UIView)中,讓這個ContentView獨自應對外界(ScrollView)的變化,ContentView内部的子View隻需要實作普通的限制即可(eg:本例中實作的是左右滑動切換至不同的TableView,共三個TableView)

3.在具體設定ContentView與其父控件ScrollView的限制時,特别需要注意的是,Content View的Width、Height千萬不要與ScrollView發生關系(eg:與ScrollView等高、等寬),通常的做法是在無關的外部找一個參照物,讓ContentView與其發生Width、Height上的聯系。

3.5本例中,contentView需要包含三個水準方向連續的TableView,是以其寬度為螢幕寬度的三倍。在外部找到一個與螢幕等寬的anchor View,設定如下:

Proportional Width t anchor View (MUtiplier 設定為3)

意思是contentView的寬度等于anchor View的三倍,如果發現contentView變成螢幕寬度的0.3了,切換下雙方的限制先後位置試試

4.對于第三點,還是想強調一下,由于自動布局需要确定ScrollView的ContentSize,是以Content View的高寬一定要是獨立于ScrollView存在的,這樣才能正确确定ScrollView的Content Size,否則兩者的限制之間互相依賴,就無法正确确定其ContentSize

5.如果TableView的頂部總是多出一塊區域,上下滑動一下又沒了,這樣試試:

self.automaticallyAdjustsScrollViewInsets = NO;

6.特别關注ScrollView的Bounces、Bounce Vertically、Bounce Horizontally這三個屬性,在ScrollView中嵌套TableView的過程中,你可能會遇到這些家夥帶來的麻煩