为啥 UIView 的扩展对除了放置在 IB 上的 UIView 之外的其他控件没有直接影响?

Posted

技术标签:

【中文标题】为啥 UIView 的扩展对除了放置在 IB 上的 UIView 之外的其他控件没有直接影响?【英文标题】:Why extension for UIView does not showing direct effect on other control except UIView placed on IB?为什么 UIView 的扩展对除了放置在 IB 上的 UIView 之外的其他控件没有直接影响? 【发布时间】:2017-03-16 10:50:05 【问题描述】:

例如

@IBDesignable extension UIView
    @IBInspectable var fillColor:UIColor?
        set
            backgroundColor=newValue
        
        get
            return backgroundColor//UIColor(cgColor: backgroundColor!)
        
    

我知道这是不必要的,但只是为了检查我已经创建了这个,发现如果在 UIView 中应用它可以直接工作,否则它不起作用。

有人可以建议我我错过了什么吗?我正在使用 swift 3.0.2。 在此先感谢:)

【问题讨论】:

【参考方案1】:

试试这个

当你扩展 UIView 时

class AJView:UIView
    @IBInspectable var fillColor:UIColor? 
       didSet 
           layer.backgroundColor = fillColor.cgColor
       
    

当使用扩展时

     extension BTextField
    @IBInspectable var fillColor:UIColor? 
        get
            return self.fillColor
        
        set 
            layer.backgroundColor = self.fillColor?.cgColor
        
    

希望它有效。 我已经编辑了答案,你现在可以查看

【讨论】:

这是错误的答案...因为 layer.backgroundColor 是 cgColor 而不是 UIColor 并且扩展不应该有存储的属性。所以你能不能说得更具体些……谢谢你的努力:) 请你不要再犯同样的错误了……我已经提到了你的错误。

以上是关于为啥 UIView 的扩展对除了放置在 IB 上的 UIView 之外的其他控件没有直接影响?的主要内容,如果未能解决你的问题,请参考以下文章

在 IB 中为啥不能添加多个条形按钮项?

iOS - Swift - UIImage 上的可点击区域

如何在 UIView 中嵌入 UITableView?

为啥 UIView 框架上的 observable 只在订阅后触发一次

在 FSCalendar UIView 上放置按钮

UIView 上的顶部空间约束,而不是 UIImag