首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从框架访问@IBInspectable属性

无法从框架访问@IBInspectable属性
EN

Stack Overflow用户
提问于 2019-01-09 04:43:15
回答 1查看 33关注 0票数 0

我正在打包我每天在工作流程中使用的扩展。我在UIView上提取这个扩展并将其放入一个框架中。

我做了初始构建,所有这些IBInspectable属性在使用此框架的项目中都不可访问。下面是独立框架中的UIView扩展的代码。

代码语言:javascript
复制
public extension UIView {

    @IBInspectable public var cornerRadius: CGFloat {
        get {
            return self.layer.cornerRadius
        }

        set {
            self.layer.cornerRadius = newValue
        }
    }

    @IBInspectable public var borderWidth: CGFloat {
        get {
            return self.layer.borderWidth
        }

        set {
            self.layer.borderWidth = newValue
        }
    }

    @IBInspectable public var borderColor: UIColor? {
        get {
            guard let borderColor =  self.layer.borderColor else {
                return nil
            }
            return UIColor(cgColor: borderColor)
        }

        set {
            self.layer.borderColor = newValue?.cgColor
        }
    }

    @IBInspectable public var shadowColor: UIColor? {
        get {
            guard let shadowColor =  self.layer.shadowColor else {
                return nil
            }
            return UIColor(cgColor: shadowColor)
        }

        set {
            self.layer.shadowColor = newValue?.cgColor
        }
    }

    @IBInspectable public var shadowOffset: CGSize {
        get {
            return self.layer.shadowOffset
        }

        set {
            self.layer.shadowOffset = newValue
        }
    }

    @IBInspectable public var shadowRadius: CGFloat {
        get {
            return self.layer.shadowRadius
        }

        set {
            self.layer.shadowRadius = newValue
        }
    }

    @IBInspectable public var shadowOpacity: CGFloat {
        get {
            return CGFloat(self.layer.shadowOpacity)
        }

        set {
            self.layer.shadowOpacity = Float(newValue)
        }
    }
}

有没有想过,我可能做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-01-23 15:20:51

使用open而不是public作为访问说明符来访问模块外部的class和变量。

代码语言:javascript
复制
open extension UIView {

    @IBInspectable open var cornerRadius: CGFloat {
        get {
            return self.layer.cornerRadius
        }

        set {
            self.layer.cornerRadius = newValue
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54099407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档