UIScrollView不完全滚动

时间:2015-07-10 06:04:32

标签: ios swift uiscrollview

我有一个ViewController。在其中我将ScrollView与View(contentView)放在一起。后来我从contentView拖到View并设置Equal Height。现在它滚动,但不完全。

enter image description here

enter image description here

  

如你所见,它继续在textView下方,但它   不滚动。我该如何解决?

4 个答案:

答案 0 :(得分:0)

您需要设置scrollview的内容大小。使用以下代码执行此操作:

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

}

答案 1 :(得分:0)

AutolayoutUIScrollView一起使用非常棘手。

在您的代码中,您必须通过计算subviews contentView的高度来更新 contentView 的高度限制,这将自动更新您的contentSize ScrollView您可以滚动浏览所有子视图。

有关使用 Autolayout + UIScrollView 的详细信息,您可以阅读this

答案 2 :(得分:0)

UIScrollView能够自动计算它的内容高度和宽度,但你需要帮助它。 为此,您需要:

  1. contentView(在您的情况下)绑定到superview的所有方面(Scroll View)。
  2. contentView计算它的大小。这是你的方法中的一个小错误。您已将contentView的高度设置为等于View的高度。所以基本上Scroll View的contentSize.height与View的高度相同。这不是你想要的动态内容。
  3. 通常您希望将contentView的宽度设置为等于View的宽度,并且不要设置contentView的高度。相反,您希望将contentView的子视图绑定到他们的超级视图,以便他们的超级视图(contentView)自动计算它的高度。

    在你的情况下,我会绑定:

    • pizza.jpg到superview的左上角(pizza.jpg的高度将根据内部图片大小设置);
    • SAMPLE TITLE标签 - 左右观看;最靠pizza.jpg图片;
    • Text View - 左下角到superview;最靠SAMPLE TITLE标签;设定一个固定的高度。

    在这种情况下,contentView将自己定义所需的高度。 Scroll View会相应地设置它的contentSize。 并且您的屏幕将能够垂直滚动(应该是);)

答案 3 :(得分:0)

根据this link(感谢this Matt's answer first),UIScrollView与AutoLayout的行为与其他视图的行为不同。

scrollView的子视图从scrollView的contentView设置其约束,而不是直接设置scrollview。这允许内容滚动。

所以:

  1. 向您的scrollView添加UIView,这将代表您的scrollView的contentView。向顶部,底部,尾部添加约束,从视图引导到其superView
  2. Interface Builder抱怨。在这里,您可以看到基本视图和scrollView之间的不同。原因是必须填写contentView以了解其大小。因此,从contentView添加相同的宽度到scrollView
  3. contentView现在知道它的宽度,但不知道它的高度。因此,将您的标签和UIImage添加为contentView的子视图。从下到上添加约束。不要错过为UIImageView添加高度约束。
  4. 它应该是这样的:

    enter image description here

    希望这有帮助

    阅读this (from Matt once again)了解更多信息