【发布时间】:2015-05-19 16:33:22
【问题描述】:
我最近在我的视图控制器中添加了一个滚动视图。但是,这导致我的布局完全混乱。
下面是一张图片。
(我给 UIScrollView 一个临时的红色背景,以显示它显然占据了全屏)
现在。我在这个视图中有很多东西。但为了简单起见,我将重点放在顶部的蓝色条上,在我的应用中称为“topBar”
首先,我在我的类中定义它。
var topBar = UIView()
我删除了自动调整大小,给它一个颜色并将它添加到我的滚动视图中。
//----------------- topBar ---------------//
topBar.setTranslatesAutoresizingMaskIntoConstraints(false)
topBar.backgroundColor = UIColor.formulaBlueColor()
self.scrollView.addSubview(topBar)
将其添加到我的视图字典中:
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))
最后是不起作用的部分。我 /attempt/ 使其成为“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)
}
^ contentSize 的宽度会改成屏幕的宽度(我只想要垂直滚动)。但现在与我遇到的布局问题相比,这是一个小问题
任何关于为什么所有东西都挤在一起的帮助将不胜感激!
【问题讨论】:
标签: ios swift uiscrollview autolayout constraints