Я создал вертикальный NSStackView, который содержит два подкласса NSView (это просто NSViews, которые рисуют фоновый цвет). У меня есть набор стека, чтобы отключить скрытые виды. Я установил одно из видов, которые будут скрыты.Скрытый вид в NSStackView не скрывается?
Ни один вид не скрывается в представлении стека.
Чтобы убедиться, что я не сумасшедший, я также создал два из тех же NSViews рядом друг с другом, спрятав один. Конечно, скрывается.
Распределение представлений стека установлено на Fill пропорционально (не так, как кажется).
В 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
Устанавливается «скрытый» код. Интересно, что если я делаю пустой проект с помощью Storiesboards и помещаю те же взгляды в контроллер моего представления, я не получаю ошибку (что странно, потому что приложение, с которым я столкнулся, находится в раскадровке). – Aaron