【发布时间】:2014-12-25 00:08:52
【问题描述】:
详情
我正在观看 Session 411 on WWDC 2014 的视频,其中提到了“Interface Builder 的新功能”,我正在尝试如何创建框架以便制作 @IBDesignable 类来预览我在 Storyboard 中的更改,而无需运行应用程序。
@IBInspectable 属性在我将我的类添加到特定视图并使用以下代码正确呈现视图时正确显示:
代码
@IBDesignable
class MyView: UIView {
@IBInspectable var borderColor: UIColor = UIColor.clearColor() {
didSet {
layer.borderColor = borderColor.CGColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
@IBInspectable var masksToBounds: Bool = false {
didSet {
layer.masksToBounds = masksToBounds
}
}
}
日志
我注意到这些属性被添加到用户定义的运行时属性(在Identity Inspector下)。现在,我对此的期望是,当我运行代码以保持这些更改时,我使用特定视图进行了更改。
我运行应用程序,但视图未加载 用户定义的运行时属性,并在输出时出现此错误(不是崩溃):
Unknown class MyClass in Interface Builder file
Failed to set (cornerRadius) user defined inspected property on (UIView)
问题
是什么导致应用程序无法加载我在 Identity Inspector 下添加的用户定义的运行时属性?
【问题讨论】:
-
其他东西会导致您的问题,因为该代码按应有的方式完美运行 - 当我运行应用程序时,这些值会正确保存。我可以更改标准 attributes inspector 和 user defined runtime attributes 部分下的所有值。
-
这就是我刚才所说的:“当我运行应用程序时,这些值会被正确保存”,而你只是说同样的话“当我运行应用程序时app 我添加的属性工作正常”,我确定你的问题在这里,也许? (顺便说一句,我没有在控制台上收到任何警告消息)。
-
你添加 QuartzCore 框架了吗?
-
@holex 我删除了评论,因为我无法编辑,所以我在这里写。我在 IB 上添加了属性,但是在应用程序运行时它们没有被加载。这就是我的意思。
-
Interface Builder 抱怨与视图关联的类在您的目标中不可用。 MyClass....您是想将其配置为“MyView”还是打错字?
标签: ios swift ios8 interface-builder