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



我在使用新的自动布局功能时遇到问题。我添加了一个名为tableView的NSView作为workBox的子视图。 workBox还包含一些与Interface Builder一起添加的其他子视图

[self.window setFrame:frame display:YES animate:YES];
[workingBox addSubview:tableView];

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


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

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

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

我无法通过在代码中添加约束来做到这一点。 但是,在界面生成器中,我可以看到有问题的NSView有一个约束,名为"底部对齐"。我在检查器中将其更改为优先级 1,并在窗口扩展时阻止 NSView 向下拉伸。 我认为我在上面的评论中提到的这种自动添加约束一直是问题所在。

最新更新