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