IBDesignable视图导致无休止的重建

时间:2015-03-25 15:36:52

标签: ios xcode interface-builder

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

'Designables' state oscillating between 'Updating' and 'Up to date'

每次构建重新启动时,检查员都会失去焦点。这使得很难从IB编辑任何东西,这首先打破了写这门课程的目的。

以下是我的DesignableTestView的实现:

import UIKit
@IBDesignable class DesignableTestView: UIView {

    @IBInspectable var testBackground:UIColor? {
        didSet {
            if testBackground != nil {
                self.backgroundColor = testBackground
            }
        }
    }
}

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

3 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:1)

即使将所有IBDesignables和IBInspectables移动到一个单独的框架(并清除所有,杀死派生数据)之后,我仍然遇到此问题Xcode 9.3。 IB将继续重建主要目标及其依赖关系。

我在这里找到的解决方案https://www.e-learn.cn/content/wangluowenzhang/307740解决了它:

  1. 删除所有@IBDesignable@IBInspectable
  2. 清除所有内容,清除派生数据,关闭Xcode
  3. 重新打开Xcode,强制IB在没有IBDesignables的情况下重建(编辑器 - > RefreshAllViews应该不显示灰色)
  4. 关闭Xcode
  5. 添加所有@IBDesignable@IBInspectable返回
  6. 重新打开Xcode
  7. RefreshAllViews应该可用,点击它。
  8. 瞧,IB从现在开始只重建框架
  9. 显然,在Xcode中缓存了一些时髦的东西,清除/杀死派生数据没有擦除。