Objective c 在Autolayout中,如何使NSWindow在删除自定义视图后重新调整到最小尺寸?
我使用AutoLayout将NSWindow调整为内容的固有大小。这在我第一次向NSWindow的contentView添加子视图,然后添加视觉约束(如“H:|[view]|”和“V:|[view]|”)时效果非常好 稍后,我将删除此视图(removeFromSuperView),并将另一个视图添加到窗口中,并为新添加的视图添加新约束。但是,此时NSWindow不会收缩以占据新视图的最小大小。而是“扩展”新添加的视图以反映窗口的旧大小Objective c 在Autolayout中,如何使NSWindow在删除自定义视图后重新调整到最小尺寸?,objective-c,xcode,cocoa,autolayout,Objective C,Xcode,Cocoa,Autolayout,我使用AutoLayout将NSWindow调整为内容的固有大小。这在我第一次向NSWindow的contentView添加子视图,然后添加视觉约束(如“H:|[view]|”和“V:|[view]|”)时效果非常好 稍后,我将删除此视图(removeFromSuperView),并将另一个视图添加到窗口中,并为新添加的视图添加新约束。但是,此时NSWindow不会收缩以占据新视图的最小大小。而是“扩展”新添加的视图以反映窗口的旧大小 我已将contentView的内容拥抱优先级设置为1000(
我已将contentView的内容拥抱优先级设置为1000(水平和垂直),认为这将起作用,但什么都不起作用。我还尝试在新添加的视图上调用invalidateIntrinsicContentSize,在NSWindow上调用updateConstraints,但没有任何效果。下面的方法似乎有效。我将高度和宽度设置为0@550优先级,这导致窗口以我希望的方式“拥抱”内容:
[customView setAlphaValue:0];
[customView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.window.contentView customView];
NSDictionary *views = NSDictionaryOfVariableBindings(customView);
[self.window.contentView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[customView(0@550)]|"
options:0
metrics:nil
views:views]];
[self.window.contentView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[customView(0@550)]|"
options:0
metrics:nil
views:views]];