子类的UILabel子类不显示

时间:2019-04-26 20:46:15

标签: swift uilabel

我正在尝试创建自定义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
    }
} 

我做同样的事情,我直接从情节提要中继承了我的新子类,但是当我使用视图层次结构对其进行调试时,没有显示任何内容,创建了标签并且使用了我想要的值,但是未显示文本。 / p>

这就是我继承子类的方式 enter image description here

1 个答案:

答案 0 :(得分:0)

当我更改属性名称 lineSpacing 时,所有事情都按预期进行,我认为问题在于我使用的是相同的标签属性名称。