我最近在我的viewcontroller中添加了一个scrollview。然而,这导致我的布局完全陷入困境。
下面是一张图片。
(我给UIScrollView一个临时的红色背景,显示它显然是全屏幕)
现在。在这个视图中我有很多东西。但为了保持简单,我将专注于顶部的蓝色条,在我的应用程序中称为“topBar”
首先,我在班上定义它。
var topBar = UIView()
我删除自动调整大小,给它一个颜色并将其添加到我的滚动视图。
//----------------- topBar ---------------//
topBar.setTranslatesAutoresizingMaskIntoConstraints(false)
topBar.backgroundColor = UIColor.formulaBlueColor()
self.scrollView.addSubview(topBar)
将其添加到我的viewsDictionary:
var viewsDictionary = [ "topBar":topBar]
将高度添加到我的metricsDictionary:
let metricsDictionary = ["topBarHeight":6]
在尺寸约束中设置高度。
//sizing constraints
self.scrollView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:[topBar(topBarHeight)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary))
最后这部分不起作用。我/尝试/使其成为“scrollView”的全宽
// Horizontal Constraints
self.scrollView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|[topBar]|", options: nil, metrics: nil, views: viewsDictionary))
和我的垂直约束把它放在最上面。
// Vertical Constraints
self.scrollView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:|[topBar]", options: nil, metrics: nil, views: viewsDictionary))
现在我的scrollview(可能导致我的布局难题的那个)
它的设置如下:
是班上第一件事:
let scrollView = UIScrollView(frame: UIScreen.mainScreen().bounds)
我的viewDidLoad()
中的第一件事self.view.addSubview(scrollView)
scrollView.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollView.scrollEnabled = true
最后我的viewDidLayoutSubviews。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
scrollView.contentSize = CGSize(width:2000, height: 5678)
}
^ contentSize的宽度将更改为屏幕的宽度(我只想垂直滚动)。但是现在,与我所拥有的布局问题相比,这是一个小问题
任何关于为什么一切都被挤在一起的帮助将非常感激!
答案 0 :(得分:1)
我设法解决了以下问题。
在viewDidLayoutSubviews
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
scrollView.contentSize = CGSize(width:self.view.bounds.width, height: 5678)
}
而不是让视图等于滚动视图,我不得不把它作为它的子视图。
我还必须制作滚动视图的子视图,以便我的所有内容都能正确使用约束。
self.view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
contentView.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(contentView)
我的所有其他对象都是" contentView"的子视图。而不是滚动视图。