5

我在 Interface Builder 中创建了一个带有两个子视图的 NSSplitView。我希望左侧视图具有固定宽度。我尝试为两个子视图定义自动调整大小规则,但左侧子视图在调整窗口大小时仍会改变宽度(拆分视图会填满一个窗口)。可能是由 NSSplitView 的 Autoresizes Subviews 属性引起的?(我无法取消选中它)。我能做些什么?

4

3 回答 3

5

我发现在 Interface Builder 中执行此操作的最佳方法:

  • 将 NSSplitView 拖放到窗口上
  • 选择要修复的自定义视图
  • 转到 Xcode 菜单并选择 Editor > Pin > Width
  • 将属性检查器中的常量调整为您希望面板固定的大小

当然,如果您喜欢冒险,也可以按照上面的建议通过代码添加此布局约束。

于 2013-05-22T23:04:29.523 回答
2

您想要的行为需要一些您可以在 NSSplitView 的委托上执行的代码。但是,您可以使用BWToolKit获得相同的结果。

于 2010-01-10T22:37:12.077 回答
0

我认为它应该与 NSLayoutConstraint 一起使用,我目前在 :) 工作。

编辑:

也许可以根据评论 hayden提供有关我的答案的更多详细信息。您可以通过代码或在 IB 中定义约束。在 IB 中选择您的左子视图并单击右下角的约束按钮,定义一个宽度约束。如果您现在选择这个新约束,您可以设置宽度并说它应该相等并设置您喜欢的大小。

第二种方法是在代码中创建一个 NSLayoutConstraint 对象,我就是这样做的(这只是一个示例,并没有定义固定宽度)。

// define for the view: Constraint and AutoresizingMask option
NSView *view = self.view;
[view setTranslatesAutoresizingMaskIntoConstraints:NO];  // disable AutoresizingMask
NSDictionary *views = NSDictionaryOfVariableBindings(view);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[view(>=140,<=220)]" options:0 metrics:nil views:views]];

通常,您可以在术语Auto Layout下找到有关此主题的文档。要使用它,您必须启用自动布局,并且此功能会替换旧的自动调整大小功能。(因此我在代码中禁用了自动调整掩码)。

这个功能是新的,你可以用它做复杂的事情,但我认为我值得学习。

于 2012-07-14T13:17:41.647 回答