Cocoa NSStackView中的隐藏视图未隐藏?
我创建了一个垂直NSStackView,其中包含两个NSView子类(它们只是绘制背景色的NSView)。我将堆栈视图设置为分离隐藏视图。我已将其中一个视图设置为隐藏 这两个视图都不隐藏在堆栈视图中 为了确保我没有发疯,我还设置了两个相同的NSView,彼此相邻,隐藏其中一个。果不其然,一个人确实躲起来了 堆栈视图的分布设置为按比例填充(这似乎无关紧要) 在IB中,行为似乎是正确的;其中一个视图隐藏 我肯定错过了一些非常明显的东西,对吧 如果相关,NSView子类: #导入“ViewWithBackgroundColor.h”Cocoa NSStackView中的隐藏视图未隐藏?,cocoa,nsstackview,Cocoa,Nsstackview,我创建了一个垂直NSStackView,其中包含两个NSView子类(它们只是绘制背景色的NSView)。我将堆栈视图设置为分离隐藏视图。我已将其中一个视图设置为隐藏 这两个视图都不隐藏在堆栈视图中 为了确保我没有发疯,我还设置了两个相同的NSView,彼此相邻,隐藏其中一个。果不其然,一个人确实躲起来了 堆栈视图的分布设置为按比例填充(这似乎无关紧要) 在IB中,行为似乎是正确的;其中一个视图隐藏 我肯定错过了一些非常明显的东西,对吧 如果相关,NSView子类: #导入“ViewWithB
这看起来像是IB和堆栈视图的问题(如果尚未提交错误报告,请提交错误报告) 要解决此问题,您可以:
- 不要在IB中隐藏按钮,并将其设置为在运行时隐藏
- 取消选中IB中的“分离隐藏视图”堆栈视图属性(在屏幕截图中可见),并在运行时使用
进行设置-[NSStackView setDetachesHiddenViews:
- 不要在IB中隐藏按钮,并将其设置为在运行时隐藏
- 取消选中IB中的“分离隐藏视图”堆栈视图属性(在屏幕截图中可见),并在运行时使用
进行设置-[NSStackView setDetachesHiddenViews:
隐藏。有趣的是,如果我使用序列图像板创建一个空白项目,并将相同的视图放在我的视图控制器中,我就不会出现错误(这很奇怪,因为我遇到这个问题的应用程序在序列图像板中)。2019年,Xcode团队仍然没有解决这个问题。在代码中设置隐藏
。有趣的是,如果我使用序列图像板创建一个空白项目,并将相同的视图放在我的视图控制器中,我就不会出现错误(这很奇怪,因为我遇到这个问题的应用程序在序列图像板中)。2019年,Xcode团队仍然没有解决这个问题。
@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