【问题标题】:Hidden view in NSStackView not hiding?NSStackView 中的隐藏视图不隐藏?
【发布时间】:2016-02-11 04:53:52
【问题描述】:

我创建了一个包含两个 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

【问题讨论】:

    标签: cocoa nsstackview


    【解决方案1】:

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

    要解决它,您可以:

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

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

    【讨论】:

    • 在代码中设置hidden 有效。有趣的是,如果我使用 Storyboards 制作一个空白项目并将相同的视图放在我的视图控制器中,我不会得到错误(这很奇怪,因为我遇到此问题的应用程序位于故事板中)。
    • 2019年,Xcode团队还没有解决这个问题。 ?‍♂️
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多