将 ScrollView 添加到现有视图

Add a ScrollView to existing View

我正在 Swift 2.0 中开发一个小应用程序。我有一个具有以下层次结构的视图:

现在,放置在该视图中的元素无法在其中完整显示,因此我想使用 ScrollView 以便能够滚动所有内容。

如何将我的 View 中的所有内容嵌入到新的 ScrollView 中?我可以通过代码以编程方式执行此操作吗?

更新:有一种更简单的方法可以做到这一点,我在发布此答案时并不知道

1) 转到故事板上的 viewcontroller 并单击其中的内容,然后按 Command + A。这将 select 视图中的所有元素。

2) 转到 Editor -> Embed In -> Scroll View。这会将所有标签、视图等嵌入到滚动视图中。

3) Select 您刚刚嵌入的 scrollview。按 Control 并将其拖动到 viewcontroller 的相应 class 文件并创建一个出口 scrollView.

4) 将此添加到您的 viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100)

确保 contentSize 的高度大于视图的大小。

手动添加 SCROLLVIEW

1) 将对象库中的 scrollview 拖放到情节提要中的 viewcontroller 上,并为您的程序创建一个出口 'scrollView'.

2) 单击您的 viewcontroller 并转到尺寸检查器并记下宽度和高度。

3) 点击您的 scrollview 并设置 widthheightviewcontroller 相同。并将 XY 值设置为 0

4) 点击scrollView然后稍微往旁边拖一点

5) 按Command+A到select包括scrollView在内的所有元素。按 Command 然后点击 scrollView 去 select ScrollView

6)您现在将拥有除 scrollView selected 之外的所有元素。现在单击并将它们拖到 scrollView 中。

7) 现在单击 scrollView 并在大小检查器中将 XY 值设置为 0。

8) 将此添加到您的 viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100)

确保 contentSize 的高度大于视图的大小。

这应该会为您的视图创建一个滚动视图。某些元素 的位置可能略有不同 。您可以通过将它们移动到故事板上来轻松修复它们。

它甚至可以比 ebby94 的答案更简单。

1) 转到故事板上的 viewcontroller 并单击其中的内容并按 Command + A。这将 select 视图中的所有元素。

2) 转到编辑器 -> 嵌入 -> 滚动视图。这会将所有标签、视图等嵌入到滚动视图中。

3) 将滚动视图的约束设置为视图的边缘。

你可以开始了!不需要插座。

选择所有元素并嵌入滚动视图(编辑器->嵌入->scrollView)工作正常。

通过选择约束警告(添加缺少的约束),添加约束要容易得多。

我遇到了同样的问题。我需要将滚动视图添加到现有的 view.But 我的主容器视图中有很多视图。他们彼此相连。所以我很害怕。最后我做到了。下面给出的过程。

  1. 复制您的视图(根视图)。为此,首先 select 根视图然后按 Command + D

  2. 现在删除根视图里面的所有子视图视图

  3. 现在将滚动视图添加到根视图并将约束设置为 0,0,0,0

  4. 现在将复制的(您复制的)视图添加到滚动视图并将约束设置为 0,0,0,0 并设置您想要的高度。

  5. 设置复制视图的宽度与根视图的宽度相等。

  6. 现在 select viewController,去尺寸检查器,select 自由尺寸。然后设置您在重复视图中输入的高度。

  7. 你差不多完成了。现在您必须将子视图与您在 viewController class 中提供的出口或操作连接起来。

就是这样。

很简单。命令 A 和命令 X 到 StoryBoard 中的特定视图控制器。之后采取滚动视图。在滚动视图上,只取一个视图控制器视图高度和宽度等于滚动视图宽度的视图。再次执行命令 V 并重新排列约束。您的问题将得到解决。

如果您正在使用 Snapkit 或以编程方式创建。

class ScrollViewController: UIViewController {

lazy var contentViewSize = CGSize(width: self.view.frame.width, height: self.view.frame.height + 320) //Step One

lazy var scrollView : UIScrollView = {
    let view = UIScrollView(frame : .zero)
    view.frame = self.view.bounds
    view.contentInsetAdjustmentBehavior = .never
    view.contentSize = contentViewSize
    view.backgroundColor = .white
    return view
}()

lazy var containerView : UIView = {
    let view = UIView()
    view.frame.size = contentViewSize
    view.backgroundColor = .white
    return view
}()

override func viewDidLoad() {

    self.view.addSubview(scrollView)
    self.scrollView.addSubview(containerView)

    //Now Set Add your Constraints in the container View.

}
}

以上接受的答案解释足以实现滚动视图,但我更愿意以编程方式创建我的完整应用程序,并且我不在我的项目中使用故事板。此代码适用于不喜欢使用故事板的人。

解释

第一步:确定您的内容大小。在这里,我采用精确宽度并在屏幕高度上再增加 320。

第二步:创建滚动视图并添加滚动视图的期望行为。现在,滚动视图的 contentSize 应该与您在上面的第一步中创建的 contentSize 相同。

按照第一步和第二步。您将能够在视图顶部设置滚动视图。但是如果你想添加一个拉伸行为那么你应该按照第三步

第三步: 创建一个容器视图,其大小与您在第一步中计算的 contentView 相同,并将其设置为容器视图的框架。通过这样做,您将能够在屏幕上实现拉伸页眉和页脚行为。

请阅读确保按照设置的相同顺序添加约束。

回答欢迎修改。