代码之家  ›  专栏  ›  技术社区  ›  Abilash Balasubramanian

无法在自定义视图类的情节提要中查看IBinspectable自定义属性

  •  0
  • Abilash Balasubramanian  · 技术社区  · 6 年前

    我已经创建了自定义的uiview类,其中包含ibdesignable方法enable。 在类中,我添加了一些类似于这样的IBinspectable属性,

    swift 4.0-snippet:

    @ibdesignable
    类分段视图:uiview{
    @IBinspectable var borderwidth=0.0{
    DIDSET {
    layer.borderwidth=cgfloat(borderwidth)
    }
    }
    
    @IBinspectable var bordercolor=uicolor.clear{
    DIDSET {
    layer.bordercolor=bordercolor.cgcolor
    }
    }
    }
    < /代码> 
    
    

    每当我在uiview元素的Storyboard中使用此类时,我无法在Storyboard中查看上面声明的IBinspectable属性->查看->查看属性选项卡,有关参考,请检查下面附加的屏幕截图。

    问题:在上述段视图标题中,没有可用的IBinspectable属性。

    有人能帮我解决上述问题吗?

    事先谢谢。

    Swift 4.0-代码段:

    @IBDesignable
    class SegmentView: UIView {
        @IBInspectable var borderWidth = 0.0 {
                didSet{
                    layer.borderWidth = CGFloat(borderWidth)
                }
            }
    
            @IBInspectable var borderColor = UIColor.clear {
                didSet{
                    layer.borderColor = borderColor.cgColor
                }
            } 
    }
    

    每当我在uiview元素的Storyboard中使用此类时,我无法在Storyboard->View->View属性选项卡中查看以上声明的IBinspectable属性,请查看下面的附加屏幕截图以供参考。

    enter image description here

    问题:在上面的段视图标题中,没有可用的IBinspectable属性。

    有人能帮我解决上述问题吗?

    事先谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Bence Pattogato    6 年前

    您需要显式声明变量类型,例如:

    @IBDesignable
    class SegmentView: UIView {
    
        @IBInspectable var borderWidth: CGFloat = 0.0 {
            didSet {
                layer.borderWidth = CGFloat(borderWidth)
            }
        }
    
        @IBInspectable var borderColor: UIColor = .clear {
            didSet {
                layer.borderColor = borderColor.cgColor
            }
        } 
    }
    
        2
  •  1
  •   Hemant Sabale    6 年前

    请将变量替换为以下变量,它将解决您的问题。

            @IBInspectable
            public var borderWidth: CGFloat = 0.0{
                    didSet{
                            self.layer.borderWidth = self.borderWidth
                    }
            }
    
            @IBInspectable
            public var borderColor: UIColor = UIColor.clear{
                    didSet{
                            self.layer.borderColor = self.borderColor.cgColor
                    }
    
            }
    
    推荐文章