NSScrollView在AutoLayout上滚动

时间:2016-05-14 15:42:25

标签: objective-c autolayout nsscrollview

我有0x0限制在AutoLayout(固定在主视图的240px坐标上,height固定宽度并等于主视图的[self.leftMenu setFrame:NSMakeRect(0, 0, menuWidth, 2000.0)]; [self.leftMenu setFrameSize:NSMakeSize(menuWidth, 2000.0)];

我遇到的问题是,当我的内容垂直增长时,剪辑似乎并不理解我想要的东西(垂直滚动启用)。

我试过了两个:

[self.leftMenu needsUpdateConstraints];

并触发它:

height

然而没有变化。我甚至试图默认显示垂直滚动条以查看是否存在问题,但它确实无法滚动。

因此,我的默认视图445px1000px(表示滚动视图容易出现getVar() { return mVar; }),当我调整窗口大小时,它合法地显示了我拥有的溢出内容以编程方式绘制。

我来到这个iOS-variationolder article,但并不知道正确的做法是什么。在iOS开发中从未遇到过这方面的问题,但这些看似简单的事情引起了一些小麻烦。

2 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是因为在内容视图大于滚动视图的情况下,间距约束必须为负。下图说明了应对内容视图设置的约束。

NSScrollView Layout Constraints

内容视图的前导,尾随和上限约束应为0,底部应为-1555(如果内容视图的高度为2000)。这样做会告诉滚动视图需要多少滚动才能显示整个视图。

我希望这有帮助,我通常使用iOS,所以我遇到了与UIScrollView类似的问题。我知道这两个并不完全相同,但我试图建立一个简单的项目,并用这些约束测试它,我确实滚动。

答案 1 :(得分:0)

NSScrollView不允许您直接修改contentView和documentViews。您的内容包含在某种视图中 - 对于默认的NSScrollView,compile 'com.squareup.okhttp3:okhttp:3.2.0'内的NSView内有NSClipView

无论您使用什么视图来保存不断增长的内容,只需将该视图重新分配到NSScrollView的documentView(在更新了它的框架/尺寸appropriatley之后)。这会触发scrollview重新计算所有内容并根据需要激活滚动。

NSScrollView

希望这有帮助!