IBDesignable视图导致无休止的重建

Bra*_*adB 17 xcode interface-builder ios

我正在编写一个使用IBInspectable和IBDesignable的UIView子类.我没有做任何异常,但我的子类导致Xcode 6.2无休止地重建项目.我的Identity Inspector在"Designables"标题下显示此状态振荡:

'Designables'状态在'更新'和'最新'之间振荡

每次构建重新启动时,检查员都会失去焦点.这使得很难编辑IB中的任何内容,这首先打破了编写这个类的目的.

这是我的DesignableTestView的实现:

import UIKit
@IBDesignable class DesignableTestView: UIView {

    @IBInspectable var testBackground:UIColor? {
        didSet {
            if testBackground != nil {
                self.backgroundColor = testBackground
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法改变我的代码或Xcode的设置,以防止不断重建?

Rob*_*Rob 17

我想知道这个可设计的视图类是否是当前目标的一部分.在WWDC 2014视频中,Interface Builder中的新功能,在实时视图演示中,他们描述了第一步是确保可设计类位于单独的自定义框架目标中.该视频演示了在项目中创建此自定义框架目标的过程.

如果那不是问题.我建议清理你的项目("产品"菜单上的"清理")并重新构建自定义框架目标,以确保在你尝试在IB中做任何事情之前没问题.最重要的是,确保框架可以毫无意外地构建.如果在执行此操作后问题仍然存在,我会将其提升到下一级别并且(a)找到Xcode派生数据文件夹; (b)退出Xcode; (c)清除派生数据文件夹,(d)重新启动Xcode,以及(e)再次尝试构建框架目标.

  • 使用单个目标时,无休止的重建很常见.我鼓励你将IBDesignables与你的主要目标保持在一个单独的目标中(我发现它更可靠,Apple明确建议我们这样做).如果你有无尽的重建,即使是在单独的目标中的可设计,我会暂时改为可设计的目标并尝试构建,并确保你没有那里的错误.如果你仍然有问题,我建议找到派生数据文件夹,退出Xcode,清空派生数据文件夹,然后重启Xcode. (2认同)
  • 除了视频之外还有其他地方可以记录吗? (2认同)

小智 9

即使将我的IBDesignable类移到一个单独的框架中,我仍然遇到这个问题(在Xcode 8.3.3中).对我有用的是打开有问题的Xib文件,取消选中编辑器>自动刷新视图,然后重新启动Xcode.