UIScrollView Vertical Scroll + Autolayout

时间:2016-06-06 17:28:31

标签: ios swift uiscrollview

我想做一些简单的事情,但Apple喜欢为开发人员过度复杂化(非常具有讽刺意味)。我想创建一个可垂直滚动的屏幕。基本上我可以滚动的更长的屏幕。问题是它要么不滚动,要么内容(用于演示目的的标签)固定在屏幕上(例如居中)。

我查看了多个教程,但仍然没有完全理解它,因为内部工作没有完全解释。

因此,根据我的理解,它如下:

  • 您将UIScrollView放在主UIView
  • 的顶部
  • 您将UIScrollView的边距设置为0-0-0-0
  • 您在UIView
  • 中放置了内容视图UIScrollView
  • 您将其边距设置为与主UIViewUIScrollView
  • 相关的0-0-0-0
  • 您设置了UIScrollView和内容UIView的高度&宽度(在我的情况下,我选择1000作为高度,屏幕宽度选择宽度,因为我只需要垂直滚动)
  • 您将UIScrollView.contentSize设置为大于屏幕的内容
  • 您添加内容并将其与内容UIView
  • 对齐

那么当我不应该忘记或添加什么?如果有人能够快速解释如何做到这一点,请这样做。

2 个答案:

答案 0 :(得分:3)

这很多都是错的:

  

因此,根据我的理解,它如下:

     

您将UIScrollView置于主UIView

之上      

您将UIScrollView的边距设置为0-0-0-0

     

您将内容视图UIView放在UIScrollView

中      

你将它的边距设置为与主UIView和UIScrollView相关的0-0-0-0

     

您可以设置UIScrollView和内容UIView的高度和宽度。宽度(在我的情况下,我选择1000作为高度,屏幕宽度选择宽度,因为我只需要垂直滚动)

     

您将UIScrollView.contentSize设置为大于屏幕

的值      

添加内容并将其与内容UIView对齐

有各种策略可以在自动布局下滚动视图。 “内容视图”策略非常有效,而且非常方便,尽管它不是唯一可行的策略。既然你似乎意味着要使用它,那就让我们使用它:

  • 使用约束将滚动视图的顶部,底部,左侧和右侧固定到主视图。通常这些约束将具有零常数,但没有法律要求这一点。

  • 为滚动视图提供一个直接的子视图,即“内容视图”。使用约束将内容视图的顶部,底部,左侧和右侧固定到滚动视图。这些约束必须具有零常数。

  • 提供内容视图的高度和宽度约束。绝对设置它们的常量值。在实验上,使用大数字。正如您所说,零宽度和1000高度将使您在小于1000高度的屏幕上进行垂直滚动。

现在停止。不要添加任何更多约束,也不要以任何其他方式设置滚动视图的内容大小。您已完成。滚动视图现在是可滚动的,即使其中没​​有任何内容可见 - 只要高度或宽度约束常量值大于运行时滚动视图的实际高度或宽度。您可以运行该项目并查看这是真的。

您现在可以自由填充内容视图。

答案 1 :(得分:0)

您不必在滚动视图中放置UIView。您可以添加所需的任何对象,并在scrollview中设置对象框架。可滚动区域由UIScrollView的contentSize属性设置。

您需要确保做的一些事情:

1)将<UIScrollViewDelegate>添加到.h文件

2)设置scrollview.delegate = self;

3)设置scrollview.contentsize = CGSizeMake(大于屏幕的东西)

4)确保使用scrollview.scrollEnabled = YES;

滚动滚动视图