我创建了一个包含两个 NSView 子类的垂直 NSStackView(它们只是绘制背景颜色的 NSView)。我将堆栈视图设置为分离隐藏视图。我已将其中一个视图设置为隐藏。
两个视图都不会隐藏在堆栈视图中。
为了确保我没有发疯,我还设置了两个相同的 NSView 并排在一起,隐藏了一个。果然,一个人躲起来了。
堆栈视图的分布设置为按比例填充(这似乎无关紧要)。
在 IB 中,这种行为似乎是正确的;其中一个视图隐藏。
我一定在这里遗漏了一些非常明显的东西,对吧?
如果相关,则 NSView 子类:#import "ViewWithBackgroundColor.h"
@implementation ViewWithBackgroundColor
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
[self.backgroundColor set];
[NSBezierPath fillRect:dirtyRect];
if(self.bottomBorderColor != nil) {
NSBezierPath *linePath = [[NSBezierPath alloc] init];
[self.bottomBorderColor set];
linePath.lineWidth = 2.0;
[linePath moveToPoint:NSMakePoint(0, 0)];
[linePath lineToPoint:NSMakePoint(dirtyRect.size.width, 0)];
[linePath stroke];
}
}
- (NSColor *) backgroundColor {
if (_backgroundColor) {
return _backgroundColor;
} else {
return [NSColor clearColor];
}
}
@end