NSStackView скрыть виды + растущее текстовое поле - PullRequest
0 голосов
/ 15 марта 2019

У меня есть NSStackView, ширина которого равна или меньше 250. Внутри у меня есть NSImageView и NSTextView. TextView установлен менее 150 и его объятие (я не хочу увеличивать приоритет) снижается.

Когда я добавляю строку, все раскладывается как положено. Однако, когда я скрываю imageView, textView не увеличивается до 150 и остается того же размера (второе изображение). Он будет расти только после того, как я изменю строку (третье изображение) или вызову invalidateIntrinsicContentSize в textField.

Как правильно скрывать / отключать представления внутри NSStackView, чтобы подпредставления увеличивались до желаемого размера (в данном случае максимум 150)?

PS: та же проблема появляется, даже если я помещаю эти подпредставления в их собственные NSStackView с распределением, установленным на Fill, и пытаюсь скрыть левое представление стека

@property (weak) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *textField;
@property (weak) IBOutlet NSImageView *imageView;
@property (weak) IBOutlet NSStackView *stackView;
@end

@implementation AppDelegate

- (IBAction)appendString:(NSButton *)sender
{
    NSString *string = [self.textField stringValue];
    self.textField.stringValue = [NSString stringWithFormat:@"%@ + string", string];
}

- (IBAction)hideImageView:(NSButton *)sender
{
    [[self imageView] setHidden:![[self imageView] isHidden]];
//    [[self textField] invalidateIntrinsicContentSize];
}

- (IBAction)hideTextview:(NSButton *)sender
{
    [[self textField] setHidden:![[self textField] isHidden]];
}

Настройка enter image description here

размер после скрытия изображения enter image description here

Размер после добавления строки enter image description here

...