一静盅、使用的基本原則:
原則1:UIScrollView的size依賴于subviews
首先在StoryBoard中拖入一個UIScrollView八千,用Pin按鈕忘分,隨意設(shè)置其布局缸剪。因為設(shè)置UIScrollView的布局約束是沒有用的策添,UIScrollView的size(即contentSize)是根據(jù)其中的subviews所占據(jù)的size來計算的材部。當然,如果contentSize的內(nèi)容不足以布滿整個UIScrollView時舰攒,滾動條將不會出現(xiàn)败富,UIScrollView也不會滾動。
原則2:subviews的size不能依賴于UIScrollView
因為UIScrollView的size依賴于subviews摩窃,而如果subviews的size再依賴于UIScrollView兽叮,就類似于操作系統(tǒng)中的死鎖了,布局引擎就混亂了猾愿,無法工作鹦聪。
二、正確的姿勢
1蒂秘、在StoryBoard中拖入一個UIScrollView泽本。
2、設(shè)置UIScrollView的約束姻僧。例如Pin上规丽、下、左撇贺、右邊距都為0赌莺,此時UIScrollView將占據(jù)整個ViewController’s view的界面。
3松嘶、拖入一個UIView作為ScrollView的子控件艘狭,這個控件就是作為容納真正布局中控件的父控件,比如命名為contentView翠订。約束contentView的寬和高巢音,使其能滿足布局需要,能夠擺放下所有你想擺放的控件(一般來說都會超過屏幕的大芯〕)官撼。例如:width 等于ViewController’s view 的width,height等于1000橙弱。
4歧寺、設(shè)置 contentView 的Pin約束燥狰,上下左右都為0。Why斜筐?明明設(shè)置了寬和高了呀龙致,如果不做這一步,UIScrollView還是不能滾動顷链,因為這4個Pin約束實際上是用于告訴UIScrollView:我會把你的內(nèi)容“撐到”多大目代。即contentSize必須根據(jù)contentView的4條邊來確定,而不是根據(jù)別的方式嗤练。這樣榛了,UIScrollView就把contentSize的4條邊和contentView的4條邊關(guān)聯(lián)起來了。如果contentView的4條邊發(fā)生變化煞抬,UIScrollView會自動調(diào)整contentSize霜大。
5、接下來就是在contentView上布局項目中需要的界面了革答。例如在UIView左上角放了一個Label(約束:top战坤、leading),右下角放了一個Label(約束:bottom残拐、trailing)途茫。注意,這些約束都只是和contentView相關(guān)溪食,沒有和UIScrollView相關(guān)囊卜。