将滚动视图添加到集合视图层次结构

Posted

技术标签:

【中文标题】将滚动视图添加到集合视图层次结构【英文标题】:Add a scroll view to a set view hierarchy 【发布时间】:2015-03-17 21:58:37 【问题描述】:

我有一个视图控制器,其中包含许多子视图、所有连接等。我发现我现在需要一个滚动视图以允许在较小的屏幕尺寸上显示所有内容。

我的问题是如何将滚动视图添加到视图层次结构的顶部并允许滚动所有视图?

提前致谢

【问题讨论】:

我前几天回答了这个问题***.com/questions/28992374/… 谢谢,所以您必须重置相对于 tej 父滚动视图的约束?那么设置滚动视图的大小呢? 这是一个很好的教程,让 scrollView 根据内容自动设置它的 contentSize 属性。在本教程中,它在 scrollView 中使用了 contentView,但您并不真正需要它。 spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios 谢谢。因此,如果我不使用内容视图而只是将视图添加到滚动视图中,我还需要告诉滚动视图它的大小还是会根据添加到其中的视图进行计算? 【参考方案1】:

您需要首先创建包含所有子视图的UIScrollView。然后,您可以遍历所有***子视图并将它们从其父视图移动到滚动视图中。

假设在你的UIViewController

// You will need to handle auto-resize, frame adjustment, and auto-layout stuff
let scrollView = UIScrollView(frame: self.view.frame)

for view in self.view.subviews

    // Move all subviews from the main view to the scroll view
    for subView in self.view.subviews as [UIView]
    
        subView.removeFromSuperview()
        scrollView.addSubview(subView)
    


// Insert the scroll view as the first subview
self.view.insertSubview(scrollView, atIndex: 0)

如前所述,您必须处理这些视图的布局(自动调整大小的掩码、约束等)。

【讨论】:

以上是关于将滚动视图添加到集合视图层次结构的主要内容,如果未能解决你的问题,请参考以下文章

uiscrollview的自动布局,视图层次结构没有为约束做好准备

将视图添加/删除到表视图的超级视图后,UITableView 停止滚动

如何将 UIWebView 垂直滚动事件传输到父视图?

我可以将集合视图添加到集合视图部分标题吗?

在 iPhone 中使用缩放图像翻转滚动视图

如何在整个屏幕上滚动表格视图