- 前序
本文僅是作者參考網上一些文章后自己做的一些總結,沒有討論約束的詳細方式,因為使用Xcode圖形界面以及第三方的Masonry都可以,理論敘述得不是很多,更多的是一種使用方式,僅供參考,如有指教,歡迎提出
- 重要概念
在對UIScrollView進行屏幕適配的時候,其ContentSize是通過設置UIScrollView與SubViews之間的約束來確定大小的
- 兩個基本準則
- UIScrollView的ContentSize是根據subviews所占據的size來計算的。因此我們如果通過設置UIScrollView的布局約束來設置ContentSize是沒有用的,我們只需要將subviews的size都明確下來。這條原則自然不成問題,當然,如果ContentSize的內容不足以布滿整個UIScrollView時,滾動條將不會出現,UIScrollView也不會滾動。
- subviews的size不能依賴于UIScrollView。很簡單,因為原則1:UIScrollView的size(當然這里的Size均指的是ContentSize)賴于subviews。如果subviews的size再依賴于UIScrollView,則布局引擎就混亂了
- 正確步驟如下:(此步驟僅為建議步驟)
- 1.往界面上面添加一個UIScrollView
- 2.設置好UIScrollView相對于其父視圖的約束,例如Pin上下左右都為0,將占滿整個屏幕
- 3.插入一個你自己的View,不妨將他命名為containView,然后約束他的寬和高,使他能夠裝下你想添加的控件即可,例如:width 等于ViewController’s view 的width,height等于800。
- 4.重點來了,設置之前那個ContainView相對UIScrollView的Pin約束,使其上下左右都為0,很多朋友都會覺得之前已經設置好了View的寬和高,那么整個UIScrollView的ContentSize就應該計算出來了,但事實就是要是你不做這一步,你的UIScrollView是劃不動的,<ContentSize必須根據UIView的4條邊來確定,而不是根據別的什么方法來確定。這樣,UIScrollView就把contentSize的4條邊和UIView的4條邊關聯起來了。如果UIView的4條變發生變化,則不用你說,UIScrollView會自動調整ContentSize。>(這個解釋來自于網上,具體為何我也想得不是很明白)總之必須得做這件事
- 5.剩下的事情就簡單了,按照正常的布局,將containView作為父view,隨意的往上面添加你想要的控件就行了,并設置約束,當然,這些約束都只是和ContainView相關,沒有和UIScrollView相關。不然又會導致布局沖突。