【问题标题】:Custom UIView intrinsicContentSize width gets ridiculously large values or zero自定义 UIView intrinsicContentSize 宽度得到非常大的值或零
【发布时间】:2018-04-28 23:23:21
【问题描述】:

我正在尝试为 Xcode 9.1 中的 UILabel 制作偏移背景。

我有一个 UIView 的 @IBDesignable 子类,其中包含 UILabel。我有下一个限制:

  1. label.centerX == self.centerX
  2. label.centerY == self.centerY
  3. 宽度:self == 1 x 标签 + 偏移量; (通常偏移 - 20)
  4. 高度:self == mult x label + 0; (多通常 - 1.3)

我也覆盖了intrinsicContentSize:

override var intrinsicContentSize: CGSize {
    get {
        var size = self.label.intrinsicContentSize
        size.width += offset
        size.height *= self.mult
        return size
    }
}

现在,有时如果我调试代码并在覆盖的intrinsicContentSize 中的断点处停止,但主要是在 Interface Builder 中,我会得到一些可笑的大宽度值,例如 20,000,010 或类似的东西。它们非常随机但非常大。上次 Interface Builder 抱怨你只能制作 10,000x10,000 UIView。

在其他情况下,视图 intrinsicContentSize.width 为 0,为我的视图设置 intrinsicContentSize 的占位符没有帮助。

如果您转到其他 swift 文件并返回它可以更改。有时它显示正确的值,但在大多数情况下是虚假的。

最终的布局通常是我想要的,所以它可以在运行时工作,但我几乎不能在这个视图中使用 Interface Builder。

我还尝试使用空文本或一个字符文本(如“。”)来初始化 UILabel。和 frame (0,0,1,1),因为我认为零帧和 nil 文本可能会提供这种行为,但似乎也无济于事。

你有什么想法可以解决这个问题,以便我可以在 Interface Builder 中使用我的 OffsetLabel 吗?为什么会这样?

【问题讨论】:

    标签: ios uiview uilabel interface-builder intrinsic-content-size


    【解决方案1】:

    似乎在重新启动 Xcode 后它会按预期工作一段时间。

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      相关资源
      最近更新 更多