【问题标题】:UIView created from XIB file is not showing从 XIB 文件创建的 UIView 未显示
【发布时间】:2019-01-20 13:31:29
【问题描述】:

我在我的项目中创建了一个 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,它已经有一些视图,如 UILabelUIScrollView。但是当我运行应用程序时没有显示添加的视图,这是结果

有什么问题?

【问题讨论】:

  • 如何添加MainItem,能不能这样代码?
  • 你用错了,请阅读:medium.com/@brianclouser/…
  • 我已经编辑了我的代码@ukim
  • 这样我仍然得到相同的结果@vivekDas

标签: swift xcode storyboard xib


【解决方案1】:

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

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

    stackView.distribution = .fillEqually

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

【讨论】:

  • 我在添加之前打印了初始化视图的高度,它是 128
  • 如果没有限制,添加后高度可以改变。 @Amir_P 你也可以发布你配置堆栈视图的代码
  • 我已经为里面的视图添加了高度约束。配置是从情节提要完成的(具有中心对齐和填充分布的垂直轴)
  • 好吧,你是对的,没有高度限制,但我记得我已经添加了它。现在已经修复了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2011-10-05
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多