约束对NSScrollViews documentView无法正常工作

时间:2016-08-02 18:37:54

标签: swift xcode cocoa

我的scrollView的内容总是从左下角开始(但我希望它从左上角开始): enter image description here 但是当我添加更多对象时,它会得到修复,而documentView会从底部扩展,如下所示: enter image description here

我添加一个视图作为NSScrollViews documentView,如下所示:

scrollingView.documentView = contentViewIB2

然后我为documentView的顶针,左针,高度和宽度添加所需的约束,如下所示:

    topConstraint = NSLayoutConstraint(
        item: contentViewIB2
        , attribute: NSLayoutAttribute.Top
        , relatedBy: .Equal
        , toItem: contentViewIB2.superview
        , attribute: NSLayoutAttribute.Top
        , multiplier: 1.0
        , constant: 0)

    leftConstraint = NSLayoutConstraint(
        item: contentViewIB2
        , attribute: NSLayoutAttribute.Left
        , relatedBy: .Equal
        , toItem: contentViewIB2.superview
        , attribute: NSLayoutAttribute.Left
        , multiplier: 1.0
        , constant: 0)

我在添加对象时调整了contentViewIB2的宽度和高度。

1 个答案:

答案 0 :(得分:2)

由于documentView从左上角开始,因此必须翻转其坐标系。 您可以通过子类化NSView来翻转它:

class FlippedView: NSView {
    override var flipped:Bool {
        get {
            return true
        }
    }
}

然后将其分配给contentViewIB2:

Var contentViewIB2 : FlippedView

Swift 4.2

覆盖变量已重命名为' isFlipped'。其他一切都很棒。

class FlippedView: NSView {
    override var isFlipped:Bool {
        get {
            return true
        }
    }
}