我在Interface Builder中创建了一个带有两个子视图的NSSplitView。我希望左侧视图具有固定宽度。我试图为两个子视图定义自动调整规则,但左侧子视图仍然在窗口大小调整时更改宽度(拆分视图填满窗口)。可能是由NSSplitView的Autoresizes Subviews属性引起的? (我无法取消选中)。我该怎么办?
答案 0 :(得分:5)
我发现在Interface Builder中执行此操作的最佳方式:
当然,如果您喜欢冒险,也可以通过上面建议的代码添加此布局约束。
答案 1 :(得分:2)
您需要的行为需要一些可以在NSSplitView的委托上执行的代码。但是,您可以使用BWToolKit获得相同的结果。
答案 2 :(得分:0)
我认为它应该适用于NSLayoutConstraint,我现在正在工作:)。
编辑:
根据评论hayden提供更多有关答案的详细信息。您可以通过代码或IB来定义约束。 在IB中选择左侧子视图,然后单击右下角定义宽度约束的约束按钮。如果你现在选择这个新约束,你可以设置宽度,说它应该相等,并设置你喜欢的大小。
seconed的方法是在代码中创建一个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下找到此主题的文档。要使用它,您必须启用自动布局,并且此特征替换旧的自动调整功能。 (因此我在代码中禁用自动调整掩码)。
此功能已退出新功能,您可以使用它执行复杂的操作,但我认为我值得学习。