1 簡單理解
- 可以把 UIScrollView 看做是一個探照燈。探照燈的尺寸就是 UIScrollView 的尺寸。
- UIScrollVIew 的 ContentView 可以看做是在探照燈下的內(nèi)容。
想象一個場景:你端著探照燈,查看一張地圖,地圖大得很,只能看到探照燈下面的內(nèi)容。你為了看到更多的內(nèi)容:1 自己很勤快:自己動探照燈;2 自己不想動,保持探照燈不動,只移動地圖,地圖從上往下動,也能看到所有的內(nèi)容。 - 最最重要的:1 帶著坐標(biāo)系去理解 ScrollView 和 ContentView;2 動就只動一個,不要兩個都動。

scrollView-1.png
注意:1 此時若動 ScrollView ,則保持 ContentView 的坐標(biāo)原點不變化(改變 ScrollView 的 Bounds )。第二種理解:保持 探照燈 ScrollVIew 的坐標(biāo)原點不動,移動 ContentView 的 Bounds。
2 基本屬性
從文頂頂?shù)牟┛椭斜I來的圖片。

ScrollView-2.png
- contentSize
- contentOffset
- contentInset
[注]:一個用戶習(xí)慣:手指往上滑動時,想要看到下面更多的內(nèi)容??梢岳斫鉃椋? 將 ContentView 往上挪 2 或者 將 ScrollView 往下挪,兩者不要搞混。自然的用戶行為是:手指往上滑動時,就可以看做是 1 將ContentView 往下挪 2 將 ScrollVIew 往上挪
3 實現(xiàn)幾個效果
- 實現(xiàn)類似新浪微博的個人中心效果
1.監(jiān)聽 ContentOffset.y 的改變
2.設(shè)置導(dǎo)航欄的隱藏和顯示 - 實現(xiàn)新特性頁面
1.監(jiān)聽 ContentOffset.x 的改變,計算對應(yīng)的頁碼
2.設(shè)置按鈕的顯示與隱藏 - 簡書首頁效果實現(xiàn)
- 設(shè)置 ContentInset,讓內(nèi)容不要被導(dǎo)航欄擋住
- 在 ScrollVIew 上添加 UITableViewController 的視圖
問題:此處的 tableView 的內(nèi)容為什么能穿透導(dǎo)航欄顯示? - 自定義流水布局實現(xiàn)卡片放大
- 計算每個 Rectangle 中的 item 的顯示布局
- Item 中的卡片的中心點的計算,以 ContentView 的原點為參照點。這里一定借助 ScrollView 和 ContentView 之間的坐標(biāo)系理解