IBDesignable 视图导致无休止的重建
IBDesignable view causes endless rebuilding
我正在编写一个同时使用 IBInspectable 和 IBDesignable 的 UIView subclass。我没有做任何不寻常的事情,但我的 subclass 导致 Xcode 6.2 无休止地重建项目。我的 Identity Inspector 在标题 'Designables':
下显示了这种状态振荡
每次重新启动构建时,检查器都会失去焦点。这使得很难从 IB 编辑任何内容,这首先违背了编写此 class 的目的。
这是我的 DesignableTestView 的实现:
import UIKit
@IBDesignable class DesignableTestView: UIView {
@IBInspectable var testBackground:UIColor? {
didSet {
if testBackground != nil {
self.backgroundColor = testBackground
}
}
}
}
有什么方法可以更改我的代码或 Xcode 的设置以防止不断重建?
我想知道这个可设计的视图 class 是否是当前目标的一部分。在 WWDC 2014 视频 What's New in Interface Builder 中,在实时视图演示中,他们描述了第一步是确保可设计 class 在单独的自定义框架目标中。该视频演示了在项目中创建此自定义框架目标的过程。
如果这不是问题。我建议清理您的项目(“产品”菜单上的“清理”)并仅重建自定义框架目标以确保在您尝试在 IB 本身中执行任何操作之前一切正常。最重要的是,确保可以顺利构建框架。如果这样做之后问题仍然存在,我会把它带到下一个级别并(a)找到 Xcode 派生数据文件夹; (b) 退出 Xcode; (c) 清除派生数据文件夹,(d) 重新启动 Xcode,以及 (e) 再次尝试构建框架目标。
编辑:
link以上好像死了。视频可直接下载:http://devstreaming.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/411_hd_whats_new_in_interface_builder.mov?dl=1
还有一个 github 要点 links to all the 2014 material: https://gist.github.com/jianpx/eea1e938d5868e980b11
即使在将我的 IBDesignable 类 移至单独的框架后,我仍然遇到这个问题(在 Xcode 8.3.3 中)。对我有用的是打开有问题的 Xib 文件,取消选中 Editor > Automatically Refresh Views,然后重新启动 Xcode.
即使在将所有 IBDesignables 和 IBInspectables 移动到一个单独的框架(并清理所有,杀死派生数据)之后,我仍然有这个问题 Xcode 9.3。 IB 将继续重建主要目标及其依赖项。
我在这里找到的解决方案https://www.e-learn.cn/content/wangluowenzhang/307740解决了:
- 删除所有
@IBDesignable
和 @IBInspectable
- 清除所有,清除派生数据,关闭Xcode
- 重新打开 Xcode,强制 IB 在没有 IBDesignables 的情况下重建(编辑器 -> RefreshAllViews 应该不会变灰)
- 关闭Xcode
- 将所有
@IBDesignable
和 @IBInspectable
添加回
- 重新打开Xcode
- RefreshAllViews 应该可用,点击它。
- 瞧,IB 从现在开始不再只重建框架
显然 Xcode 中缓存了一些时髦的东西,cleanall/killing 派生数据没有擦除。
我正在编写一个同时使用 IBInspectable 和 IBDesignable 的 UIView subclass。我没有做任何不寻常的事情,但我的 subclass 导致 Xcode 6.2 无休止地重建项目。我的 Identity Inspector 在标题 'Designables':
下显示了这种状态振荡每次重新启动构建时,检查器都会失去焦点。这使得很难从 IB 编辑任何内容,这首先违背了编写此 class 的目的。
这是我的 DesignableTestView 的实现:
import UIKit
@IBDesignable class DesignableTestView: UIView {
@IBInspectable var testBackground:UIColor? {
didSet {
if testBackground != nil {
self.backgroundColor = testBackground
}
}
}
}
有什么方法可以更改我的代码或 Xcode 的设置以防止不断重建?
我想知道这个可设计的视图 class 是否是当前目标的一部分。在 WWDC 2014 视频 What's New in Interface Builder 中,在实时视图演示中,他们描述了第一步是确保可设计 class 在单独的自定义框架目标中。该视频演示了在项目中创建此自定义框架目标的过程。
如果这不是问题。我建议清理您的项目(“产品”菜单上的“清理”)并仅重建自定义框架目标以确保在您尝试在 IB 本身中执行任何操作之前一切正常。最重要的是,确保可以顺利构建框架。如果这样做之后问题仍然存在,我会把它带到下一个级别并(a)找到 Xcode 派生数据文件夹; (b) 退出 Xcode; (c) 清除派生数据文件夹,(d) 重新启动 Xcode,以及 (e) 再次尝试构建框架目标。
编辑:
link以上好像死了。视频可直接下载:http://devstreaming.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/411_hd_whats_new_in_interface_builder.mov?dl=1
还有一个 github 要点 links to all the 2014 material: https://gist.github.com/jianpx/eea1e938d5868e980b11
即使在将我的 IBDesignable 类 移至单独的框架后,我仍然遇到这个问题(在 Xcode 8.3.3 中)。对我有用的是打开有问题的 Xib 文件,取消选中 Editor > Automatically Refresh Views,然后重新启动 Xcode.
即使在将所有 IBDesignables 和 IBInspectables 移动到一个单独的框架(并清理所有,杀死派生数据)之后,我仍然有这个问题 Xcode 9.3。 IB 将继续重建主要目标及其依赖项。
我在这里找到的解决方案https://www.e-learn.cn/content/wangluowenzhang/307740解决了:
- 删除所有
@IBDesignable
和@IBInspectable
- 清除所有,清除派生数据,关闭Xcode
- 重新打开 Xcode,强制 IB 在没有 IBDesignables 的情况下重建(编辑器 -> RefreshAllViews 应该不会变灰)
- 关闭Xcode
- 将所有
@IBDesignable
和@IBInspectable
添加回 - 重新打开Xcode
- RefreshAllViews 应该可用,点击它。
- 瞧,IB 从现在开始不再只重建框架
显然 Xcode 中缓存了一些时髦的东西,cleanall/killing 派生数据没有擦除。