Objective c NSStackView仅显示最新的自定义视图
我有一个自定义视图控制器类。我想实例化多个自定义视图控制器,并将其视图添加到我的NSStackView中。我通过单击按钮向堆栈视图添加新视图。该按钮调用此方法:Objective c NSStackView仅显示最新的自定义视图,objective-c,macos,cocoa,nsstackview,Objective C,Macos,Cocoa,Nsstackview,我有一个自定义视图控制器类。我想实例化多个自定义视图控制器,并将其视图添加到我的NSStackView中。我通过单击按钮向堆栈视图添加新视图。该按钮调用此方法: [stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom]; 但是,添加新视图时,它会添加到上一个视图下方的stackView.spating,但上一个视图不再可见,但它仍然作为我的底部重力视图列出,这在
[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
但是,添加新视图时,它会添加到上一个视图下方的stackView.spating
,但上一个视图不再可见,但它仍然作为我的底部重力视图列出,这在我调用
NSLog(@"%lu",(unsigned long)[stackView viewsInGravity:NSStackViewGravityBottom].count);
如果我尝试添加NSButton
s,我不会遇到这个问题,因此这与我的自定义视图有关,但我不知道是什么
请帮忙。谢谢 您应该检查自定义视图是否具有完全定义视图高度的约束(或内部内容大小)。如果不这样做,这些视图将塌陷到0高度(我以前也遇到过同样的情况) 您可以通过以下方式检查是否发生这种情况:
[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
[stackView layoutSubtreeIfNeeded];
NSLog(@"%f - %d", NSHeight(myCustomViewController.view.frame), [myCustomViewController.view hasAmbiguousLayout]);
使用StackView,您将看到后面的版本打印“0-1”。高度是0,它们是不明确的
垂直NSStackView只垂直放置视图,但不提供特定高度。(水平堆栈视图和宽度相同)。您应该检查自定义视图是否具有完全定义视图高度的约束(或固有内容大小)。如果不这样做,这些视图将塌陷到0高度(我以前也遇到过同样的情况) 您可以通过以下方式检查是否发生这种情况:
[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
[stackView layoutSubtreeIfNeeded];
NSLog(@"%f - %d", NSHeight(myCustomViewController.view.frame), [myCustomViewController.view hasAmbiguousLayout]);
使用StackView,您将看到后面的版本打印“0-1”。高度是0,它们是不明确的
垂直NSStackView只垂直放置视图,但不提供特定高度。(水平堆栈视图和宽度相同)。这并不能解决我的问题-我通过编程方式将NSTextField添加到堆栈视图中,但仅显示一个,并且堆栈视图未正确调整子视图的大小。如果我将它们添加到IB中,它们可以正常工作。这并不能解决我的问题-我通过编程方式将NSTextField添加到stackView中,但只显示一个,并且stackView没有正确调整子视图的大小。如果我将它们添加到IB中,它们工作得很好。