2015-07-10 169 views
0

我有一個ViewController。在它中,我將ScrollView與View(contentView)結合在一起。之後我從contentView拖到View並設置Equal Height。現在它滾動,但不完全。UIScrollView不會完全滾動

enter image description here

enter image description here

正如你看到有它繼續TextView的下方,但它 不滾動。我該如何解決它?

+0

是否設置了滾動型的contentsize? – Leo

+0

@Leo no。我想自動完成,但不知道該怎麼做。你可以幫我嗎? –

+0

由於他使用自動佈局,因此不需要設置contentSize。你將contentView的高度設置爲等於視圖高度,爲什麼它應該滾動? –

回答

0

您需要設置滾動視圖的內容大小。使用下面的代碼來做到這一點:

func viewDidLayoutSubviews() 
{ 
    super.viewDidLayoutSubviews() 
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.contentView.frame.size.height); 

} 
+0

它不幫助我。我必須刪除我的約束 - 等高還是不?我刪除它,它根本不滾動 –

+0

@OrkhanAlizade對於contentView,您只需要將約束透視設置爲滾動視圖。頂部=底部=左=右= 0 –

+0

是的,我做的完全一樣 –

0

要使用AutolayoutUIScrollView是棘手的。

在你的代碼必須通過計算的contentViewsubviews高度更新的高度限制爲您內容查看,並且會自動更新contentSizeScrollView,您可以通過所有子視圖滾動。

欲瞭解更多信息,請使用Autolayout + UIScrollView您可以閱讀this

0

UIScrollView能夠自動計算它的內容高度和寬度,但你需要幫助它。 要做到這一點,你需要:

  1. 約束contentView(你的情況),以上海華盈的各方面(這是Scroll View)。
  2. contentView來計算它的大小。這是您的方法中的一個小錯誤。您已將contentView的高度設置爲等於View的高度。所以基本上Scroll View的contentSize.height與View的高度相同。這對於動態內容而言並不是真正需要的。

通常你想設置的contentView等於View的寬度的寬度,並且不設置contentView的高度。相反,您希望將子視圖contentView綁定到他們的超級視圖,以便他們的超級視圖(contentView)將自動計算其高度。

在你的情況我會綁定:

  • pizza.jpg到左右上角上海華(附pizza.jpg高度由內在影像尺寸設定);
  • SAMPLE TITLE標籤 - 左右超視圖;頂部到pizza.jpg圖片;
  • Text View - 左下角到superview;頂部至SAMPLE TITLE標籤;設定一個固定的高度。

在這種情況下,contentView將自行定義所需的高度。 Scroll View將相應地設置它的contentSize。 你的屏幕將能夠垂直滾動(應該是);)

0

根據this link(感謝this Matt's answer first)的UIScrollView與自動版式行爲不同於其他視圖。

scrollView的子視圖從scrollView的contentView設置它們的約束,而不是直接滾動視圖。這允許內容滾動。

所以:

  1. 添加一個UIView到您的滾動視圖,這將代表您的滾動視圖的內容查看。將約束添加到頂部,底部,尾部,從視圖到其superView
  2. Interface Builder抱怨。在這裏您可以看到基本視圖和scrollView之間的不同。原因是內容視圖必須填寫以瞭解其大小。因此,從contentView向scrollView添加相等寬度。contentView現在知道其寬度,但不知道其高度。因此,將您的標籤和UIImage添加爲contentView的子視圖。從底部到頂部添加約束。不要錯過爲UIImageView添加高度約束。

它應該是這樣的:

enter image description here

希望這有助於

this (from Matt once again)進一步信息,請