我正在尝试为 Xcode 9.1 中的 UILabel 制作偏移背景。
我有一个@IBDesignable
包含 UILabel 的 UIView 子类。我有下一个限制:
- label.centerX == self.centerX
- label.centerY == self.centerY
- 宽度:自我 == 1 x 标签 + 偏移量;(通常偏移 - 20)
- 高度:自我 == 多 x 标签 + 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 吗?为什么会这样?