从 XIB 文件创建的 UIView 未显示

UIView created from XIB file is not showing

我在我的项目中创建了一个 xib 文件,如下所示

我正在用这段代码初始化它

class MainItem: UIView {
    class func instanceFromNib() -> UIView {
        let view = UINib(nibName: "MainItem", bundle: nil).instantiate(withOwner: nil, options: nil).first as! UIView
        return view
    }
}

stackView.addArrangedSubview(MainItem.instanceFromNib())

并且我将它添加到 UIStackView 中,该 UIStackView 已经有一些视图,例如 UILabelUIScrollView。但是当我 运行 应用程序时,添加的视图没有显示,这是结果

有什么问题?

一个可能的原因是你没有指定视图的高度,所以在渲染过程中它的高度变为0。有两种方法:

  1. 将 stackView 的对齐方式设置为 .fillEqually。您可以这样做,因为标签具有非 0 的固有高度。

    stackView.distribution = .fillEqually

  2. 告诉 iOS 如何计算视图的高度。例如覆盖 intrinsicContentSize 视图