xib 創建 scrollview(詳解)

一、前引

? ? ? ?在我們開發的過程中,經常要用到詳情頁。詳情內容過多,或者是因為屏幕適配的緣故(在7p 上的固定頁面展示在phone5 phone5s 上),會導致頁面顯示不全,就使得我們需要合理的定制一個 scrollview 去展示。

? ? ? 縱觀現在市場上的 xib 定制 scrollview 上的解答內容,能用的很少。而且對于剛入門的新手來說很難理解。在此 我總結一番,希望能給大家帶來幫助。


二、詳解

? ? ?綜合來說xib 拖 scrollview 的難點在于——scrollview 上添加子控件。再側重點說的話 ,就是scrollView 上的 contentSize 的設置,我總結的原則主要有兩點:

? ? ?1、確定 scrollview 的視圖顯示范圍


在這里我們要確定 scrollview 在父視圖中的顯示范圍,為了能對比顯示,我沒有讓其占據全屏顯示。這個步驟,并沒有什么難點,刷新布局后展示效果如下

2、添加子視圖,并確定子視圖的大小,以及到 scrollview 的四邊距(為什么是四邊距?)

? 這個是我們添加子視圖的關鍵,設置子視圖的大小,主要也是為了最后我們的 contentSize 服務的。我們平常設置一個視圖的約束,設置寬高就以及左邊距 上邊距就可以確定一個視圖的位置,編譯器就不會報錯

這是我們正常視圖中添加子視圖,需要做出的約束條件。但是我們按照這個方法在 scrollview 中設置會怎么樣呢 ?

這個方法在設置 scrollview 中就報錯

原因說我們沒有足夠的約束來判斷 scrollview 的 contentSize,這是問題的關鍵,假如我們按照現在約束條件來計算 contenSize 的橫向大小 我們可以用 左邊距+子視圖寬度?,可這樣的話,你沒有設置這個視圖右邊的范圍,也就是無法計算出視圖的總容納范圍。所以我們不能再按正常視圖的設置約束的方法去設置 scollView。因為我們scollview 有一個特殊的因素 contentSize,正確的設置方法如下

四邊距的設置是為了配合子視圖的大小 來確定 scrollview 的 contenSize。 編譯器會根據

(1)scrollview 的約束 設置scrollview視圖的位置大小?

?(2)會根據子視圖的四邊距,來確定子視圖在 scrcollview 的位置

(3)會根據四邊距 和子視圖大小 來確定 contentSize。

這樣你的編譯就不會出現問題。


三、總結


? ? ? ? 仔細理解,就會發現我們設置 scrollview 還是非常簡單的,我們除了常規的設置約束的同時,再計算一下當前的約束能否確定當前 scrollview 的 contentSize,能否 唯一確定當前 scrollview的內容顯示范圍(和在父視圖的展示范圍不一樣),如果可以 ,那么你的設置就沒有問題。

? ? ?希望我的總結能幫到大家,也希望有發現錯誤的同行,及時指出問題,大家互相交流,互相切磋。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容