为什么标记为@IBInspectable 的属性不起作用?
Why properties tagged @IBInspectable is not working?
我按照 tutorial 此处创建了一个可检查和可设计的视图。我只想在 UIView
.
中添加边框颜色、边框宽度和圆形边框功能
我已经成功显示属性了。但不管我在故事板上设置了什么,如果它们不存在,结果仍然是一样的。没有边框,即使我将边框设置为宽度为 2 且颜色为黑色。它没有同时显示在故事板上和 运行 时间。我已经将边框设置为 2 宽度,但是在 运行 时,我在 didViewLoad 打印边框宽度值,结果为 0。可能是什么错误?
@IBDesignable extension view: UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth;
}
set {
layer.borderWidth = borderWidth;
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(CGColor: layer.borderColor!);
}
set {
layer.borderColor = borderColor?.CGColor
}
}
}
这也行不通:
@IBDesignable class BOView: UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth;
}
set {
layer.borderWidth = borderWidth;
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(CGColor: layer.borderColor!);
}
set {
layer.borderColor = borderColor?.CGColor
}
}
}
尝试使用新值而不是实际值。
例如,
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
Chen,我确实更喜欢你这样做的方式,但也请注意,你尝试做的事情可以直接从情节提要中进行,而无需使用 IBDesignable。您可以在用户定义的运行时属性中设置图层属性。
我按照 tutorial 此处创建了一个可检查和可设计的视图。我只想在 UIView
.
我已经成功显示属性了。但不管我在故事板上设置了什么,如果它们不存在,结果仍然是一样的。没有边框,即使我将边框设置为宽度为 2 且颜色为黑色。它没有同时显示在故事板上和 运行 时间。我已经将边框设置为 2 宽度,但是在 运行 时,我在 didViewLoad 打印边框宽度值,结果为 0。可能是什么错误?
@IBDesignable extension view: UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth;
}
set {
layer.borderWidth = borderWidth;
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(CGColor: layer.borderColor!);
}
set {
layer.borderColor = borderColor?.CGColor
}
}
}
这也行不通:
@IBDesignable class BOView: UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth;
}
set {
layer.borderWidth = borderWidth;
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(CGColor: layer.borderColor!);
}
set {
layer.borderColor = borderColor?.CGColor
}
}
}
尝试使用新值而不是实际值。
例如,
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
Chen,我确实更喜欢你这样做的方式,但也请注意,你尝试做的事情可以直接从情节提要中进行,而无需使用 IBDesignable。您可以在用户定义的运行时属性中设置图层属性。