NSStackView中的隐藏视图没有隐藏?

时间:2016-02-10 07:15:37

标签: cocoa nsstackview

我创建了一个包含两个NSView子类的垂直NSStackView(它们只是绘制背景颜色的NSView)。我将堆栈视图设置为分离隐藏的视图。我已将其中一个视图设置为隐藏。

两个视图都没有隐藏在堆栈视图中。

为了确保我不是疯了,我还设置了两个相同的NSView,彼此相邻,隐藏了一个。果然,人们确实藏起来了。

堆栈视图的分布设置为按比例填充(不是那似乎很重要)。

在IB中,行为似乎是正确的;其中一个观点隐藏起来。

我必须在这里遗漏一些非常明显的东西,对吧?

enter image description here

如果它是相关的,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

1 个答案:

答案 0 :(得分:4)

这看起来像IB和堆栈视图的问题(如果您已经没有,请提交错误报告)。

要解决此问题,您可以:

  • 不要隐藏IB中的按钮,并将其设置为在运行时隐藏。

  • 取消选中'分离隐藏的视图' IB中的堆栈视图属性(在屏幕截图中可见),并使用-[NSStackView setDetachesHiddenViews:]在运行时设置它。