如何使用“自动布局”停止调整NSView子视图的大小

时间:2012-09-25 06:02:19

标签: objective-c cocoa nsview autolayout

我遇到了新的自动布局功能问题。 我添加一个名为tableView的NSView作为workingBox的子视图。 workingBox还包含使用Interface Builder

添加的一些其他子视图
[self.window setFrame:frame display:YES animate:YES];
[workingBox addSubview:tableView];

我的问题是,如果任何其他子视图触摸tableView,那么它们将在动画中调整大小。不在tableView添加位置附近的子视图仍保持正确的大小。我已经尝试在调整大小的子视图上设置NSViewNotSizable resizeMask但它不起作用。唯一有效的方法是向上移动子视图(进入错误的位置。


编辑:我在代码中添加了一个约束:

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(divider);
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[divider(==1)]"
                                                               options:0
                                                               metrics:nil
                                                                 views:viewsDictionary];
[workingBox addConstraints:constraints];  

这使NSView保持在1px的高度,但是如果我把它锁定到顶部它会阻止超视图增长

1 个答案:

答案 0 :(得分:0)

我无法通过在代码中添加约束来完成这项工作。但是在Interface Builder中,我可以看到有问题的NSView有一个名为'Bottom Alignment'的约束。我在检查器中将此更改为优先级1,并在窗口展开时停止NSView拉伸。我认为我在上面的评论中提到的这个自动添加的约束一直是问题所在。