代码之家  ›  专栏  ›  技术社区  ›  iur

自定义UIView intrinsicContentSize width的值大得离谱,甚至为零

  •  1
  • iur  · 技术社区  · 8 年前

    我试图在Xcode 9.1中为UILabel制作一个偏移ed背景。

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

    1. 标签centerX==自身。centerX
    2. 标签中心==自身。centerY公司
    3. 宽度:self==1 x标签+偏移;(偏移量通常为-20)
    4. 高度:self==mult x label+0;(mult通常为-1.3)

    我也推翻了 intrinsicContentSize :

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

    现在,如果我调试代码并在重写的 内部内容大小 但大多数情况下,在Interface Builder中,我得到了一些非常大的宽度值,比如 20,000,010 或者类似的东西。它们很随机,但相当大。上次Interface Builder抱怨您只能创建10000x1000 UIView。

    Large value screenshot

    Interface Builder complaint

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

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

    我还尝试用空文本或像“.”这样的字符文本初始化UILabel帧(0,0,1,1),因为我认为可能零帧和零文本提供了这种行为,但这似乎也没有帮助。

    你知道我如何解决这个问题,以便在Interface Builder中使用OffsetLabel吗?为什么会发生这种情况?

    1 回复  |  直到 8 年前
        1
  •  0
  •   iur    8 年前

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

    推荐文章