2016-12-04 55 views
0

我是一個非常漂亮的iOS開發人員,並且遇到了我第一次需要滾動視圖。我需要設計的頁面有點複雜。由於我正在努力使它正確佈局,我決定創建一個超級簡單的場景,以便我可以確保我瞭解如何讓UIScrollViews工作。顯然它並沒有幫助,因爲事情不能正常工作,並且我在遵循幾個教程後被卡住了。iOS UIScrollView,我誤解了什麼?我無法滾動滾動視圖

我在Xcode 8.1和斯威夫特3.

截圖工作在這篇文章的末尾。

我有一個由scrollview和一個子視圖組成的場景,其中有兩個標籤。我已經將標籤設置爲〜700pt以嘗試進行滾動。沒有什麼滾動,你只能看到第一個標籤。此外,子視圖不會展開爲全高。

您可以在屏幕截圖中看到我的滾動視圖有約束將其固定到超級視圖的兩側。

子視圖也是一樣的。

標籤約束將它們放置在子視圖內,並且彼此間隔700pt。我認爲這會讓視圖達到滾動所需的高度。沒有約束錯誤。

我希望紅色的childview填充垂直空間,然後滾動。在這一點上,只要有東西在滾動,我就會採取任何佈局。沒有什麼是,我沒有得到什麼?

截圖:
(由於移除鏈接限制,因爲我仍然是一個新的SO用戶)


EDIT(16年6月12日):

我已經做了一些改動並接近一點。主要是,我建議在其他地方將其中一個標籤設置爲與滾動視圖等高。這現在給我「反彈」的效果,這意味着東西是滾動的東西;然而,我們仍然只處理一個內容屏幕,因爲隱藏在下面的第二個標籤被剪掉。

這就是事情立場:
edited hierarchy
edited screenshot

+0

需要設置滾動視圖的內容的大小。如果你沒有明確地設置它,那麼它將計算它的內容的大小,這是子視圖的大小。由於您已將子視圖約束爲滾動視圖,因此子視圖的大小與滾動視圖的大小相同。嘗試在子視圖和滾動視圖之間設置約束,以便子視圖大於滾動視圖(例如,編輯「子視圖前導==滾動視圖前導」並將常量設置爲-300) – Paulw11

+0

@ Paulw11我認爲具有標籤意味着內容大小?此外,我還對內容視圖以及頂部/底部/頂部/尾部設置了高度= 90的限制。否則,它會拋出一個錯誤。所以它確實有一個明確的高度。 – Philip

+0

它會嘗試並推斷出內容大小,但由於您已將視圖限制在滾動視圖中,即它將以最終的內容大小爲前提,假設您需要基於水平間距的可見屏幕外的按鈕。看看如果將按鈕的前沿約束到視圖的前沿和另一個按鈕的後沿並保持間距,會發生什麼情況。您應該以衝突結束 – Paulw11

回答

0

示例層次當你在故事板使用UIScrollView,你需要確保滾動視圖能夠計算其內容的大小。如果你沒有足夠的約束,那麼你將在Interface Builder得到一個錯誤:

滾動的內容大小歧義

點擊即需要有制約這個錯誤會告訴你的信息圖標觸摸滾動視圖的所有側面,並確保您可以從左到右和從上到下跟蹤連續的約束線。

您可以通過或不通過已添加的內容視圖來實現此目的。我將向您展示如何在沒有滾動視圖中的內容視圖的情況下執行此操作,只是因爲這種方式的約束較少,因此輸入較少。

  1. 添加滾動視圖到根視圖
  2. 約束滾動視圖到它的父(根視圖)的頂部/左/頂部/底部。請記住,如果你想在屏幕的整個寬度來約束關掉利潤率
  3. 添加標籤1和標籤2滾動視圖
  4. 約束頂級/領先的標籤1 /底部滾動視圖
  5. 約束頂級/後/標籤2的底部滾動視圖
  6. 約束標籤1的後緣到標籤2的前緣與0空間
  7. 約束標籤1米的寬度爲等於滾動視圖的寬度
  8. 將標籤1的高度限制爲等於滾動視圖的高度
  9. 約束的寬度和標籤2的高度爲等於標籤1
  10. 的寬度和高度沒有步驟10 :)
+0

我能夠得到它的工作!我的垂直滾動,它看起來像你的例子是水平的。但是我缺少的部分是你在這裏與標籤1和2如何相互作用以及相等的高度。我會將其標記爲正確的。非常感謝您的幫助和耐心! – Philip

+0

對不起,我一定誤解了你之後的滾動方向,但是當你發現基本方法在任一軸 – Paulw11

0

ScrollViews尤其是在他們喜歡明確地知道他們有多少應該滾動。處理這個我已經找到了最好的辦法是有一些限制以下層次:

-Scroll View 
    -Content View 
     -View (constrained to top, bottom, leading, trailing anchors) 
      -Your other views (e.g. Label) 

由具有一個視圖生活的內容視圖下方,然後將包含所有其他意見的該視圖中,則滾動型則知道它應該滾動多少(它只是使用一個子View的大小),而不管子View中有多少東西。

讓我看看是否可以從我的一個項目中捕捉示例圖片。與此同時,給這個層次結構一個嘗試,讓我知道它是否適合你。您可能會將標籤約束到子View的頂部和主要錨點,然後將高度限制爲高於屏幕的高度(例如1000單位)。

讓我知道如果您有任何問題。

編輯:下面

Content View has a child View which holds all of your other Views

+0

這似乎沒有做任何不同的事情。 – Philip