Не удалось получить доступ к свойству @IBInspectable из фреймворка - PullRequest
0 голосов
/ 08 января 2019

Я упаковываю расширение, которое я использую изо дня в день в своем рабочем процессе. Я извлекаю это расширение в UIView и помещаю его в фреймворк.

Я сделал первоначальную сборку, и все эти свойства IBInspectable недоступны в проекте, где используется эта среда. Ниже приведен код расширения UIView, которое находится в отдельном фреймворке.

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)
        }
    }
}

Есть мысли о том, что я могу делать не так?

1 Ответ

0 голосов
/ 23 января 2019

Используйте open вместо public в качестве спецификатора доступа для доступа к классу и переменной вне модуля.

open extension UIView {

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

        set {
            self.layer.cornerRadius = newValue
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...