Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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
Macos 如何根据自动布局内容视图自动调整NSWindow的大小';s最小尺寸_Macos_Cocoa_Nswindow_Autolayout - Fatal编程技术网

Macos 如何根据自动布局内容视图自动调整NSWindow的大小';s最小尺寸

Macos 如何根据自动布局内容视图自动调整NSWindow的大小';s最小尺寸,macos,cocoa,nswindow,autolayout,Macos,Cocoa,Nswindow,Autolayout,目前,我的应用程序的行为允许我调用我编写的这个额外的函数,hacks可以调整窗口大小以适应它 - (void)fitToMinimumSize { NSRect frame = [self frame]; frame.size = [[self contentView] fittingSize]; int originalHeight = [self frame].size.height; int diff = originalHeight - frame.siz

目前,我的应用程序的行为允许我调用我编写的这个额外的函数,hacks可以调整窗口大小以适应它

- (void)fitToMinimumSize
{
    NSRect frame = [self frame];
    frame.size = [[self contentView] fittingSize];
    int originalHeight = [self frame].size.height;
    int diff = originalHeight - frame.size.height;
    frame.origin.y += diff;
    [self setFrame:frame display:YES];
}
但是,我可以通过一些内置的自动布局代码来自动执行这种行为吗?这样窗口的大小就总是它的contentView的最小值,而不是这个万能的黑客


编辑:我发现我可以检查[[self-contentView]fittingSize],但是如果它发生变化,或者我应该自己触发它,我该如何观察它呢?

通常,如果您的布局是由窗口内容视图及其子项上设置的
NSConstraint
完全明确地确定的,那么一切都应该是“自动”的

在您的情况下,我会尝试在内容视图上安装高度和宽度约束,尺寸足够小(甚至可能为零),但优先级低于在子视图上设置的“内容压缩阻力优先级”。要使一切正常工作,您可能必须使用约束优先级和/或在内容视图的子级上安装其他约束

只要您的子视图被约束为不塌陷为零,那么这应该在没有任何其他代码的情况下工作。我还认为,在这种情况下,窗口不应该是可由用户调整大小的。

请注意,使用约束与使用自动调整大小掩码不同。。