【发布时间】:2014-07-22 20:03:32
【问题描述】:
我正在向主 NSWindow 中的 NSView 添加一些简单的约束,但这会导致问题。
通常我可以调整我的应用程序窗口的大小(就像任何 Safari/Finder 窗口等一样)。我在窗口中添加了一个简单的 NSView,如下所示:
[self.blackDimOverlay setFrame:NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height)];
[self.blackDimOverlay setAlphaValue:0.5f];
[self.window.contentView addSubview:self.blackDimOverlay];
这按预期工作。然后我向这个视图添加两个约束,以便在调整大小时它保持窗口的完整大小。
NSDictionary *viewsDict = NSDictionaryOfVariableBindings(_blackDimOverlay);
NSArray *constraintHorizontalOverlay = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_blackDimOverlay]-0-|" options:0 metrics:nil views:viewsDict];
NSArray *constraintVerticalOverlay = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_blackDimOverlay]-0-|" options:0 metrics:nil views:viewsDict];
[self.window.contentView addConstraints:constraintHorizontalOverlay];
[self.window.contentView addConstraints:constraintVerticalOverlay];
但是,添加这两个约束后,它们将我的窗口锁定,因此我无法再调整它的大小。其他一切正常,但约束会阻止任何窗口大小调整。
如何在调整窗口大小的同时让子视图保持窗口的全尺寸?
谢谢。
【问题讨论】:
标签: objective-c macos cocoa nswindow nslayoutconstraint