在UIViewController中添加一个小的UIScrollView

时间:2017-01-19 18:17:22

标签: uiscrollview swift3

我正在尝试创建一个不完全覆盖UIViewController屏幕的UIScrollView。请参见下面的截图。为了间距和插图的目的,我放入了一些分段控件。我还缩小了内容视图(绿色),只是为了表明它在滚动视图中(浅蓝色)。滚动视图大约是屏幕的一半,内容视图大约是1,000(任意高度)。

我做了全部搜索,几乎每个教程都显示了一个完全覆盖UIViewController的滚动视图。

我已经尝试了几个小时来完成这项工作,但我总是遇到一些结构性问题,比如歧义。顺便说一句,我是在Xcode 8下的Swift 3中这样做的。

有没有人这样做过,如果有,你怎么能这样做?

感谢任何回应。

大卫

Screenshot of Interface Builder

1 个答案:

答案 0 :(得分:0)

大小模糊不是一个有限大小的滚动视图的“结构问题”,而是缺少约束的结果。在不知道你定义了哪些以及究竟是什么含糊不清的情况下,不可能回答你错过的那些。

如果你的问题是你的滚动视图没有滚动,通常的问题是你内容中的视图没有在它们的垂直空间中完全定义,因此无法定义它们的超级视图(你的内容视图)的高度。这意味着您需要垂直空间约束以及一个顶部约束和一个底部约束。

Apple文档的第三点也提到了这一点:

  

以下是有关UIScrollView的自动布局支持的一些注意事项:

     
      
  • 通常,“自动布局”会将视图的顶部,左侧,底部和右侧边缘视为可见边缘。也就是说,如果将视图固定到其超视图的左边缘,则实际上将其固定到超视图边界的最小x值。更改超级视图的边界原点不会更改视图的位置。
  •   
  • UIScrollView类通过更改其边界的原点来滚动其内容。要使用Auto Layout,滚动视图中的顶部,左侧,底部和右侧边缘现在表示其内容视图的边缘。
  •   
  • 滚动视图子视图的约束必须导致填充大小,然后将其解释为滚动视图的内容大小。 (这不应与用于自动布局的intrinsicContentSize方法混淆。)要使用自动布局调整滚动视图的框架大小,约束必须明确关于滚动视图的宽度和高度,或者滚动视图的边缘必须是与其子树之外的视图相关联。
  •   
  • 请注意,您可以通过在视图和滚动视图子树外部的视图之间创建约束(例如滚动视图的超级视图),使滚动视图的子视图显示为浮动(不滚动)在其他滚动内容上。
  •