使用NSAutolayout扩展窗口的子视图

时间:2013-11-16 18:41:08

标签: cocoa autolayout osx-mavericks

我正在尝试学习自动布局,所以我可以按照我想要的方式设置一个中等复杂的显示器。我从一个简单的版本开始。至少我认为这很简单。

我有一个包含NSScrollView和缩放滑块的内容视图。当然,滚动视图只是一个窗口,可以进入更大的“画布”,用户可以在其上执行操作。

我希望滚动视图与窗口允许的一样大,滑块位于下方。

我尝试了很多不起作用的东西,在某些情况下,当我将窗口调整得更小时,滚动视图会在窗口的顶部栏上移动,遮住标题和红黄色,绿色,点......这个只是一个抱怨,我不会试图描述我是如何得到它的。

我正在使用Visual Format Language。

当前的问题:如果我在滚动视图上加上一个硬大小的约束,我只能得到这个东西。

我有像@“V:| [ScrollView] - [ZoomSlider(== 35)] - |和 @ “| -20 @ 1000- [滚动型] - |”

有了这些,根本没有任何显示,直到我在滚动视图上放置一个硬尺寸:

例如,@“V:[ScrollView(> = 70 @ 20)]”和@“[ScrollView(> = 140 @ 20)]”会产生一个小小的滚动视图(如预期的那样)滑块。

窗口可以调整大小,好吧。

当我调整窗口大小时,是否有一种简单的方法可以调整滚动视图以占用最大的空间?我能想到的唯一方法是根据窗口大小为滚动视图生成度量标准,并在窗口大小更改时使用通知来更改约束。应该有更简单的东西!

THanks.ee

1 个答案:

答案 0 :(得分:0)

糟糕以为我知道答案,直到我开始写它。

至少在这里是对导致我问题的事情的部分解释。

您无法添加用于定位或调整Window内容视图大小的约束。但显然你可以通过以编程方式删除它们来搞砸它们。我的一些问题通过摆脱

解决了
[self.myContentView setTranslatesAutoresizingMaskIntoConstraints:NO];

    [self.myContentView removeConstraints:self.myContentView.constraints];

这给我留下了许多相互矛盾的约束。我修复了这个问题,即消除IB中可能存在的所有内容窗口限制,然后将其余部分标记为占位符。

在我了解如何使用自动布局之前,我还有很长的路要走,但是在代码中执行它比使用IB更容易(对我而言)