故事板中的UIScrollView子视图。为什么顶部和左侧额外增加20个像素?

时间:2015-09-02 06:32:52

标签: ios swift uiscrollview uistoryboard nslayoutconstraint

我的观点分为四个部分。左上角的角落视图(未使用,不可见);顶部的水平视图(代码中为timelineAreaView),显示一组轴标签;左侧的垂直视图显示另一组轴标签,视图的其余部分是大型集合视图。它与电子表格不同。

问题是我试图在顶视图中使用UIScrollView。如果我将测试UIView添加到顶部,一切都很好。这是代码:

    let timelineViewController = self.storyboard?.instantiateViewControllerWithIdentifier("TimelineViewController") as? TimelineViewController
    addChildViewController(timelineViewController!)
    timelineAreaView.addSubview(timelineViewController!.view)
    timelineViewController!.didMoveToParentViewController(self)
    timelineViewController!.view.translatesAutoresizingMaskIntoConstraints = false

    timelineAreaView.addConstraint(NSLayoutConstraint(item: timelineViewController!.view, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal,
        toItem: timelineAreaView, attribute: NSLayoutAttribute.Left, multiplier: 1.0, constant: 0))
    timelineAreaView.addConstraint(NSLayoutConstraint(item: timelineViewController!.view, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal,
        toItem: timelineAreaView, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 0))
    timelineAreaView.addConstraint(NSLayoutConstraint(item: timelineViewController!.view, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal,
        toItem: timelineAreaView, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: 0))
    timelineAreaView.addConstraint(NSLayoutConstraint(item: timelineViewController!.view, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal,
        toItem: timelineAreaView, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: 0))

TimelineViewController是一个普通的UIViewController,其UIView属性backgroundColor设置为蓝色。

结果显示在优秀工具Reveal中: correct layout

到目前为止一切顺利。但它需要有一个UIScrollView。因此,如果我在故事板中将UIScrollView添加到该UIViewController,它看起来像这样:

scrollview added in storyboard

现在它的约束如下:

constraints

这里显示的是Reveal中显示的问题 - UIScrollView突出显示:

enter image description here

显示布局检查器显示:

20 pixels added

那么为什么有20个像素添加到y原点并从帧中的x原点中减去?

我的第一个想法是查看"调整滚动视图插图的视图控制器设置"和#34;在顶部酒吧"但这些都没有效果。我找不到任何有效的设置。

回到故事板并补偿两个神秘的20像素错误,即ugly hack

这使它看起来就像我想要的那样。但我不应该这样做。发生了什么事?

0 个答案:

没有答案