我制作了一个自定义的@IBDesignable UIView,只实现了drawRect函数。像这样:
@IBDesignable
class CustomView: UIView {
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
// Lots more drawing code after this
// ...
}
}
当我写这个drawRect时,我在视图控制器上有一个故事板,其中有几个不同的渲染实例。当我在drawRect中进行更改并保存时,这些更改将在接近实时的情况下反映在故事板中。甚至有一个IBInspectable String允许我更改枚举类型并根据不同的方式绘制。可以在故事板中调整视图的大小,并在我的绘图代码中考虑新的宽度和高度,并且绘图将按照我的预期进行缩放和翻译。
这一切都运行正常,我没有对该UIView子类进行任何更改,但我确实在故事板中删除了我的测试视图,同时构建了实际最终使用此自定义视图的新视图。
在做了大量的约束跳舞后,我准备将自定义视图放在它所属的位置。但它不起作用。身份检查员将我的自定义类确认为IBDesignable时,它会挂起“正在更新”状态。
为了证明我没有疯狂,我制作了全新的@IBDesignable UIView子类,它实现了简单的drawRects甚至是完全空的drawRects。这些现在具有相同的问题,并且不在故事板上呈现。
请注意,我可以在模拟器中运行此功能,图形会在运行时显示。那么故事板能够提供我期望从IBDesignable获得的那么好的反馈呢?
我尝试过的事情:
所有这些尝试都会继续在身份检查器的“自定义类”部分中显示“正在更新”。
显然,我实施之外的东西在这里引起了一个问题。还有其他人有这个问题吗?任何人都能指出我正确的方向吗?不知道还有什么可以尝试。