使用自動佈局滾動內容

該專案是一個完全在 Interface Builder 中完成的自包含示例。你應該能夠在 10 分鐘或更短的時間內完成它。然後,你可以將你學到的概念應用到你自己的專案中。

https://i.stack.imgur.com/L4puB.gif

在這裡我只使用 UIViews,但它們可以代表你喜歡的任何檢視(即按鈕,標籤等)。我還選擇了水平滾動,因為這種格式的故事板截圖更加緊湊。但是,垂直滾動的原理是相同的。

關鍵概念

  • UIScrollView 應該只使用一個子檢視。這是一個’UIView’,用作內容檢視,用於儲存你想要滾動的所有內容。
  • 使內容檢視和滾動檢視的父級具有相等的水平滾動高度。 (垂直滾動的寬度相等)
  • 確保所有可滾動內容都具有設定的寬度並固定在所有側面。

開始一個新專案

它可以只是一個單一的檢視應用程式。

故事板

在這個例子中,我們將建立一個水平滾動檢視。選擇 View Controller,然後在 Size Inspector 中選擇 Freeform。製作寬度 1,000 和高度 300。這只是讓我們在故事板上新增了可以滾動的內容。

StackOverflow 文件

新增滾動檢視

新增 UIScrollView 並將所有四個邊都固定到檢視控制器的根檢視。

StackOverflow 文件

新增內容檢視

UIView 作為子檢視新增到滾動檢視。*這是關鍵。*不要嘗試在滾動檢視中新增大量子檢視。只需新增一個 UIView。這將是你要滾動的其他檢視的內容檢視。將內容檢視固定到四個方面的滾動檢視。

StackOverflow 文件

相等高度

現在,在文件大綱中,Command 單擊內容檢視和滾動檢視的父檢視,以便同時選擇它們。然後將高度設定為相等(控制</ kbd 從內容檢視拖動到滾動檢視>)。*這也是關鍵。*因為我們是水平滾動,滾動檢視的內容檢視將不知道它應該有多高,除非我們以這種方式設定它。

StackOverflow 文件

注意:

  • 如果我們將內容垂直滾動,那麼我們將內容檢視的寬度設定為等於滾動檢視的父寬度。

新增內容

新增三個 UIViews 並給它們所有約束。我用了 8 點的餘量。

StackOverflow 文件

約束:

  • 綠色檢視:固定頂部,左側和底部邊緣。寬度為 400。
  • 紅色檢視:固定頂部,左側和底部邊緣。使寬度為 300。
  • 紫色檢視:固定所有四個邊緣。無論剩餘空間是什麼,都要做寬度(在這種情況下為 268)。

*設定寬度約束也是關鍵,*以便滾動檢視知道其內容檢視的寬度。

成品

就這樣。你現在可以執行你的專案。它的行為應該與此答案頂部的滾動影象相似。

進一步研究