我最近在我的视图控制器中添加了一个滚动视图。然而,这导致我的布局完全混乱。
下面是一张图片。
(我给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))
现在关于我的滚动视图(可能导致布局问题的那个),它的设置如下:
作为类中的第一个元素:
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)
}
^ 内容大小的宽度将被更改为屏幕的宽度(我只想要垂直滚动)。但现在与我遇到的布局问题相比,这只是一个小问题。
如何解决所有东西挤在一起的问题,任何帮助都将不胜感激!