Тип растяжения и кернинга, не работает в Раскадке с @IBDesignable

Вот IBLabel, который отслеживает/растягивает шрифт.

Он отлично работает в сборке. Но это изменение не отображается в Раскадке.

// UILabel, but you can set
// the tracking (that the overall amount of space between all letters)
// and streching (actually squeeze or stretch the letters horizontally)
// Note: it very common that typographers need you to adjust these.

import UIKit

@IBDesignable
class StyledLabel: UILabel
    {
    @IBInspectable var tracking:CGFloat = 0.8
    // values between about 0.7 to 1.3.  one means normal.

    @IBInspectable var stretching:CGFloat = -0.1
    // values between about -.5 to .5.  zero means normal.

    override func awakeFromNib()
        {
        let ats = NSMutableAttributedString(string: self.text!)
        let rg = NSRange(location: 0, length: self.text!.characters.count)

        ats.addAttribute(
            NSKernAttributeName, value:CGFloat(tracking), range:rg )

        ats.addAttribute(
            NSExpansionAttributeName, value:CGFloat(stretching), range:rg )

        self.attributedText = ats
        }
    }

Симулятор справа отлично работает.

введите описание изображения здесь

На самом деле не отображается в прямом эфире на раскадровке (см. слева).

Дикая догадка, мне не хватает функции инициализации?

Или что может быть проблема?


Примечание. Установите размер шрифта в соответствии с высотой:

Возможно, вы захотите установить размер шрифта, чтобы заполнить рамку метки на всех устройствах. Чтобы сохранить yo, введите здесь класс, который "указывает на высоту", отслеживание и растяжение: qaru.site/info/39543/...

Ответ 1

Вы также должны поместить свой код внутри prepareForInterfaceBuilder(). Он вызван только в конструкторе интерфейса, а не во время выполнения.

override func prepareForInterfaceBuilder() {
    let ats = NSMutableAttributedString(string: self.text!)
    let rg = NSRange(location: 0, length: self.text!.characters.count)

    ats.addAttribute(
        NSKernAttributeName, value:CGFloat(tracking), range:rg )

    ats.addAttribute(
        NSExpansionAttributeName, value:CGFloat(stretching), range:rg )

    self.attributedText = ats
}