2

目前,我的应用程序的行为允许我调用我编写的这个额外函数,该函数将窗口大小调整为 FittingSize。

- (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],但是我如何观察它以防它发生变化,或者我应该自己触发它?

4

1 回答 1

1

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

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

这应该在没有任何其他代码的情况下工作,只要您的子视图被限制为抵抗崩溃为零。我还认为在这种情况下,窗口不应该是用户可调整大小的。

于 2012-08-22T04:33:30.097 回答