1

2 つの NSView サブクラスを含む垂直 NSStackView を作成しました (これらは背景色を描画する単なる NSView です)。非表示のビューを切り離すようにスタック ビューを設定しています。ビューの 1 つを非表示に設定しました。

どちらのビューもスタック ビューで非表示になりません。

私が正気でないことを確認するために、同じ NSView を 2 つ並べて、1 つを非表示にしました。案の定、人は隠れます。

スタック ビューの分布は、比例的に塗りつぶすように設定されています (それは重要ではないようです)。

IB では、動作は正しいようです。ビューの 1 つが非表示になります。

ここで信じられないほど明白な何かが欠けているに違いありませんよね?

ここに画像の説明を入力

関連する場合は、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
4

1 に答える 1