UILabel подкласс подкласса не отображается - PullRequest
1 голос
/ 26 апреля 2019

Я пытаюсь создать пользовательский UILabel, мой первый подкласс работает как положено, я делаю некоторые изменения и изменения атрибутов шрифта.

@IBDesignable class LunaLbl: UILabel {
    @IBInspectable dynamic open var fontSize: CGFloat = 25 {
        didSet {
            updateFont()
        }
    }
    @IBInspectable dynamic open var fontName: String = Fonts.proDisplayBold.rawValue {
        didSet {
            updateFont()
        }
    }
    @IBInspectable dynamic open var fontColor: UIColor = .lunaBlack {
        didSet {
            updateFont()
        }
    }
    @IBInspectable dynamic open var lineSpacing:  CGFloat = 1.2 {
        didSet {
            updateFont()
        }
    }
    override open func draw(_ rect: CGRect) {
        super.draw(rect)
        updateFont()
        self.adjustsFontSizeToFitWidth = false
    }

    func updateFont() {
        let textContent = self.text
        let textString = NSMutableAttributedString(string: textContent!, attributes: [
            NSAttributedString.Key.font: UIFont(name: fontName, size: fontSize)!])
        let textRange = NSRange(location: 0, length: textString.length)
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        textString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: textRange)
        textString.addAttribute(NSAttributedString.Key.foregroundColor, value: fontColor, range: textRange)
        self.attributedText = textString
    }
}

Теперь мой второй подкласс, который наследуется от моего первого подкласса, ничего не отображается на моем экране.

@IBDesignable class LunaTitleLbl : LunaLbl {
    override open func draw(_ rect: CGRect) {
        super.draw(rect)
        fontSize = 25.0
        fontName = Fonts.proDisplayBold.rawValue
        fontColor = .lunaBlack
        updateFont()
        self.adjustsFontSizeToFitWidth = false
    }
} 

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

Вот как я наследую свой подкласс enter image description here

1 Ответ

0 голосов
/ 27 апреля 2019

Когда я изменяю имя атрибута lineSpacing и все работает должным образом, я думаю, проблема в том, что я использую то же имя атрибута метки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...