2015-07-10 149 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)进一步信息,请