NSStackView隐藏视图+不断增长的文本字段

时间:2019-03-15 12:53:08

标签: macos cocoa autolayout nstextfield nsstackview

我有一个NSStackView,其宽度等于或小于250。内部有NSImageViewNSTextView。 TextView设置为小于150,并且它的拥抱(我不想增加优先级)降低了。

当我添加字符串时,所有布局均按预期进行。但是,当我隐藏imageView时,textView不会增加到150,并且保持相同的大小(第二张图像)。仅当我更改字符串(第三张图片)或在textField上调用invalidateIntrinsicContentSize后,它才会增长。

NSStackView中隐藏/分离视图的正确方法是什么,以便子视图将增长到所需的大小(在这种情况下,最大为150)?

PS:即使我将那些子视图放入其自己的NSStackView,且分布设置为Fill,并尝试隐藏左stackview,也会出现同样的问题

@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

隐藏imageView后的大小 enter image description here

附加字符串后的大小 enter image description here

0 个答案:

没有答案