Свойство lineSpacing внутри UILabel не работает должным образом

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

import UIKit

@IBDesignable
class SpacingLabel: UILabel
{

    @IBInspectable var lineSpacing: CGFloat = 10.0

    override func awakeFromNib()
    {
        self.renderText()
    }

    override func prepareForInterfaceBuilder()
    {
        super.prepareForInterfaceBuilder()
        self.renderText()
    }

    func renderText()
    {
        var attrString = NSMutableAttributedString(string:self.text!)

       if font != nil
        {
            NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy()
            var paragraphStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as!     NSMutableParagraphStyle 
            paragraphStyle.textAlignment = self.textAlignment

            paragraphStyle.lineSpacing = self.lineSpacing
            paragraphStyle.paragraphSpacing = self.lineSpacing

            attrString.addAttributes([NSFontAttributeName : self.font!, NSParagraphStyleAttributeName : paragraphStyle], range: NSMakeRange(0, attrString.length))
            self.attributedText = attrString
        }

        self.needsUpdateConstraints()
    }

}

Вот как это отрисовывается в IB (Раскадровка):

А вот как это отображается в симуляторе:

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

1 ответ

Решение

Итак... Оказалось, что собственность lineSpacing каким-то образом конфликтует с возможной частной переменной / свойством внутри UILabel, Я переименовал свою собственность в leading и теперь работает отлично.

Другие вопросы по тегам