Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在Autolayout中,如何使NSWindow在删除自定义视图后重新调整到最小尺寸?_Objective C_Xcode_Cocoa_Autolayout - Fatal编程技术网

Objective c 在Autolayout中,如何使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(

我使用AutoLayout将NSWindow调整为内容的固有大小。这在我第一次向NSWindow的contentView添加子视图,然后添加视觉约束(如“H:|[view]|”和“V:|[view]|”)时效果非常好

稍后,我将删除此视图(removeFromSuperView),并将另一个视图添加到窗口中,并为新添加的视图添加新约束。但是,此时NSWindow不会收缩以占据新视图的最小大小。而是“扩展”新添加的视图以反映窗口的旧大小


我已将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]];