我一直在尝试将我在 Interface Builder 中创建的自定义视图添加到NSStackView
,但失败得很惨。
这是我的视图控制器。它目前除了从 NIB 初始化视图之外什么都不做:
class ServiceControlViewController : NSViewController {
init() {
super.init(nibName: "ServiceControlView", bundle: nil)!
}
}
这是我尝试将新创建的视图添加到堆栈视图的方式(这发生在应用程序委托中):
@IBOutlet weak var stackView: NSStackView!
@IBAction func addButtonClicked(sender: AnyObject) {
let viewController = ServiceControlViewController()
stackView.addView(viewController.view, in: .top)
stackView.layoutSubtreeIfNeeded()
}
当我在将创建视图的框架添加到堆栈视图之前打印它时,它具有正确的大小。如果我之后打印它,它会被压缩到零高度。我怀疑有一些我不理解的自动调整大小的魔法正在发生,但我无法修复它。
有趣的是,如果我将ServiceControlViewController
' 视图设置为 ' NSButton
,则它会被正确添加并且不会被压缩到零高度。它只发生在Custom Views
我创建的。
PS:我的 InterfaceBuilder 创建的视图只包含一堆按钮和一个标签: