我正在编写一个使用IBInspectable和IBDesignable的UIView子类。我没有做任何异常,但我的子类导致Xcode 6.2无休止地重建项目。 My Identity Inspector在“Designables”标题下显示此状态振荡:
每次构建重新启动时,检查员都会失去焦点。这使得很难从IB编辑任何东西,这首先打破了写这门课程的目的。
以下是我的DesignableTestView的实现:
import UIKit
@IBDesignable class DesignableTestView: UIView {
@IBInspectable var testBackground:UIColor? {
didSet {
if testBackground != nil {
self.backgroundColor = testBackground
}
}
}
}
有没有办法改变我的Xcode代码或设置以防止不断重建?
答案 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解决了它:
@IBDesignable
和@IBInspectable
@IBDesignable
和@IBInspectable
返回显然,在Xcode中缓存了一些时髦的东西,清除/杀死派生数据没有擦除。