@IBInspectable
的基本类型无法定义为可空。
如果您尝试这样做,并为其中一个属性设置值,则将在IBDesignable时间收到以下警告:
@IBDesignable类TestDesignable IB Designables:忽略运行时用户定义的关键路径“testInt”的属性在“TestDesignable”的实例上。在尝试设置其值时遇到异常:[setValue:forUndefinedKey:]:此类不支持键值编码,用于键testInt。
并且在运行时,您将收到以下错误:
无法将(testInt)用户定义的检查属性设置为(TestDesignable)上的属性:[setValue:forUndefinedKey:]:此类不支持键值编码,用于键testInt。
要解决此问题,请将其从可选项更改为非可选项,并给它一些零默认值。
无效的:
@IBDesignable class TestDesignable: UIView {
@IBInspectable var testInt: Int? = nil // crash
@IBInspectable var testFloat: CGFloat? = nil // crash
@IBInspectable var testPoint: CGPoint? = nil // crash
@IBInspectable var testColor: UIColor? = nil
}
合法的:
@IBDesignable class TestDesignable: UIView {
@IBInspectable var testInt: Int = 0
@IBInspectable var testFloat: CGFloat = 0
@IBInspectable var testPoint: CGPoint = .zero
@IBInspectable var testColor: UIColor? = nil
}
@IBInspectable var testColor: UIColor? = nil
可以为空?如果一开始你说了:“你不能将基元类型定义为空值,以用于@IBInspectables。” - Santiago Carmona GonzálezUIColor
是引用类型,它可以是nil
。简而言之,可设计的对象必须在Obj-C中可表示,而只有引用类型可以是nil
。 - Sulthan
@IBInspectable var cellWidth: CGFloat!
,但如果没有问题就不要修复它。 - The Beanstalk