12
  • 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,但它仍处于“正在更新”状态。

自定义uiview ibdesignable的身份检查员

为了证明我没有发疯,我创建了全新的@IBDesignable UIView 子类,它实现了简单的drawRects 甚至是完全空的drawRects。这些现在有同样的问题,并且没有在情节提要上呈现。

请注意,我可以在模拟器中运行它,并且绘图会在运行时按预期显示。那么故事板能够提供我期望从 IBDesignable 获得的良好反馈的能力发生了什么变化?

我尝试过的事情:

  • 清理/清理构建文件夹/清除 XCode Derived Data 目录
  • 重新启动 XCode
  • 删除/注释掉 drawRect 胆量
  • 使用类似 HelloWorld 的教程制作最简单的 @IBDesignables
  • 使用现有的已知工作 @IBDesignables
  • 在情节提要中创建新的 UIViewController 以放置自定义视图
  • 切换:编辑器 > 自动刷新视图
  • 编辑器 > 刷新所有视图
  • 编辑器 > 调试选定视图

所有这些尝试继续在身份检查器的自定义类部分中显示“更新”。

显然,超出我的实施范围的东西在这里造成了问题。还有其他人有这个问题吗?谁能指出我正确的方向?不知道还有什么可以尝试的。

4

1 回答 1

0

在显示“模块”的身份检查器中,添加您的 AppName

在此处输入图像描述

于 2019-07-31T01:56:08.040 回答