将ScrollView添加到现有视图

时间:2016-03-16 06:44:48

标签: ios swift scrollview

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

enter image description here

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

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

6 个答案:

答案 0 :(得分:43)

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

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

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

3)选择刚刚嵌入的scrollview。按Control并将其拖到viewcontroller的相应类文件中,然后创建一个插座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,将widthheight设置为与viewcontroller相同。并将XY值设置为0

4)点击scrollView并将其拖到侧面

5)按Command+A选择包括scrollView在内的所有元素。按Command,然后点击scrollView取消选择ScrollView

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

Moving into scrollView

7)现在点击scrollView,然后从尺寸检查器中将XY值设置为0.

8)将其添加到viewDidLoad()

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

确保contentSize的高度超过视图的大小。

这应该为您的视图创建一个scrollView。某些元素可能位于稍微不同的位置。你可以通过在storyBoard上移动它们来轻松修复它们。

答案 1 :(得分:6)

甚至比ebby94的回答更简单。

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

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

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

你很高兴去!不需要出口。

答案 2 :(得分:1)

我有同样的问题。我需要将scrollview添加到现有视图。但是我的主容器视图里面有很多视图。他们彼此联系在一起。所以我很害怕。最后我做到了。下面给出的过程。

  1. 复制视图(根视图)。首先选择根视图,然后按Command + D

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

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

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

  5. 使用根视图将重复视图的宽度设置为相等宽度。

  6. 现在选择viewController,转到尺寸检查器,选择自由形状尺寸。然后使用重复视图设置您输入的高度。

  7. 你差不多完成了。现在,您必须将子视图与您在viewController类中提供的插座或操作相关联。

  8. 多数民众赞成。

答案 3 :(得分:1)

如果您使用的是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相同。

按照步骤1和步骤2。您将能够在视图顶部设置滚动视图。但是,如果要添加拉伸行为,则应遵循第三步

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

请仔细阅读以确保按照设置顺序添加约束。

欢迎回答。

答案 4 :(得分:0)

选择所有元素并嵌入滚动视图(editor-> embed in-> scrollView)可以正常工作。

通过选择约束警告(添加缺失约束),可以更轻松地添加约束。

答案 5 :(得分:0)

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