为啥标记为@IBInspectable 的属性不起作用?
Posted
技术标签:
【中文标题】为啥标记为@IBInspectable 的属性不起作用?【英文标题】:Why properties tagged @IBInspectable is not working?为什么标记为@IBInspectable 的属性不起作用? 【发布时间】:2016-10-18 08:33:45 【问题描述】:我在这里按照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
【问题讨论】:
你在 IB 中打开菜单Editor
➜ Automatically Refresh Views
了吗?
@holex 该选项已打开。
【参考方案1】:
尝试使用 newValue 而不是实际值。
例如,
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth
set
layer.borderWidth = newValue
Chen,我确实更喜欢您这样做的方式,但也请注意,您可以直接从 Storyboard 中尝试做的事情,而无需使用 IBDesignable。您可以在用户定义的运行时属性中设置图层属性。
【讨论】:
你在发布之前检查过这个答案吗?有用吗? 哦哦哦原来是这样!是的,我需要使用newValue
而不是变量名。谢谢!!!!但是 IBDesignable 仍然不起作用......但这是一个很大的飞跃!
等等,IBDesignable 现在可以工作了!!我不知道为什么!也许我需要关闭并重新打开 Xcode。谢谢!
很高兴。你的扩展有效吗?它可能真的很方便。
@CarienvanZyl 是的!现在有一个全新的世界和可能性在我面前打开了哈哈。我必须实现控制器并运行它的日子已经一去不复返了,只是为了看看边框是什么样子的。我认为这个可检查和可设计的东西非常复杂,所以直到现在我才去了解它。哦,我离真相太远了,哈哈。以上是关于为啥标记为@IBInspectable 的属性不起作用?的主要内容,如果未能解决你的问题,请参考以下文章