我在Swift 2.0中开发了一个小应用程序。我有一个具有以下层次结构的视图:
现在,放置在此视图中的元素无法完全显示在其中,因此我想使用ScrollView
以便能够滚动所有内容。
如何将View
的所有内容嵌入到新的ScrollView
中?我可以通过代码以编程方式执行此操作吗?
答案 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
,将width
和height
设置为与viewcontroller
相同。并将X
和Y
值设置为0
4)点击scrollView
并将其拖到侧面
5)按Command+A
选择包括scrollView
在内的所有元素。按Command
,然后点击scrollView
取消选择ScrollView
6)您将拥有除scrollView
之外的所有元素。现在单击并将它们拖到scrollView中。
7)现在点击scrollView
,然后从尺寸检查器中将X
和Y
值设置为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添加到现有视图。但是我的主容器视图里面有很多视图。他们彼此联系在一起。所以我很害怕。最后我做到了。下面给出的过程。
复制视图(根视图)。首先选择根视图,然后按Command + D
现在删除根视图中的所有子视图视图
现在将滚动视图添加到根视图并将约束设置为0,0,0,0
现在将副本(您复制的)视图添加到滚动视图并将约束设置为0,0,0,0也设置所需的高度。
使用根视图将重复视图的宽度设置为相等宽度。
现在选择viewController,转到尺寸检查器,选择自由形状尺寸。然后使用重复视图设置您输入的高度。
你差不多完成了。现在,您必须将子视图与您在viewController类中提供的插座或操作相关联。
多数民众赞成。
答案 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并重新排列约束。您的问题将得到解决。