- Xcode 7.0.1 (7A1001)
- iOS 9.0
我做了一个自定义的@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 获得的良好反馈的能力发生了什么变化?
我尝试过的事情:
- 清理/清理构建文件夹/清除 XCode Derived Data 目录
- 重新启动 XCode
- 删除/注释掉 drawRect 胆量
- 使用类似 HelloWorld 的教程制作最简单的 @IBDesignables
- 使用现有的已知工作 @IBDesignables
- 在情节提要中创建新的 UIViewController 以放置自定义视图
- 切换:编辑器 > 自动刷新视图
- 编辑器 > 刷新所有视图
- 编辑器 > 调试选定视图
所有这些尝试继续在身份检查器的自定义类部分中显示“更新”。
显然,超出我的实施范围的东西在这里造成了问题。还有其他人有这个问题吗?谁能指出我正确的方向?不知道还有什么可以尝试的。