gpt4 book ai didi

objective-c - 在自动布局中,如何在删除自定义 View 后使 NSWindow 调整回最小尺寸?

转载 作者:行者123 更新时间:2023-12-03 16:37:04 24 4
gpt4 key购买 nike

我正在使用 AutoLayout 来调整 NSWindow 的大小以适应内容的固有大小。当我第一次向 NSWindow 的 contentView 添加 subview ,然后添加视觉约束(例如“H:|[view]|”)时,这种方法效果很好。和“V:|[查看]|”。

我稍后删除此 View (removeFromSuperView) 并向窗口添加另一个 View ,并为新添加的 View 添加新约束。然而此时 NSWindow 不会缩小以占据新 View 的最小尺寸。相反,它“扩展”新添加的 View 以反射(reflect)窗口的旧大小。

我已将 contentView 的内容拥抱优先级设置为 1000(水平和垂直),认为这会起作用,但没有任何作用。我还尝试在新添加的 View 上调用 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]];

关于objective-c - 在自动布局中,如何在删除自定义 View 后使 NSWindow 调整回最小尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com