Установите другой шрифт в соответствии с заголовком и подзаголовком в UIlabel IBDesignable

Я создал собственный класс для uilabel с кодом ниже:

@IBDesignable
public class CustomUILabel: UILabel {

    public override func awakeFromNib() {
        super.awakeFromNib()
        configureLabel()
    }

    public override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureLabel()
    }

    func configureLabel() {
        textColor = .white
        font = UIFont(name: Constants.regularFontName, size: 14)
    }
}

Это помогло мне установить шрифт в приложении. Но я хотел создать другой полужирный шрифт для заголовка и обычный шрифт для подзаголовка. Это возможно только с одним файлом? Или мне нужно создать другое расширение для этого типа UIlabel


person ios developer    schedule 30.12.2018    source источник


Ответы (1)


Например, вы можете добавить пользовательское свойство style следующим образом:

@IBDesignable
public class CustomUILabel: UILabel {

    enum CustomUILabelStyle {
        case title, subtitle

        var font: UIFont? {
            switch self {
            case .title:
                return UIFont(name: Constants.boldFontName, size: 14)
            case .subtitle:
                return UIFont(name: Constants.regularFontName, size: 14)
            }
        }

        var textColor: UIColor {
            switch self {
            // add cases if you want different colors for different styles
            default: return .white
            }
        }
    }

    var style: CustomUILabelStyle = .title {
        didSet {
            // update the label's properties after changing the style
            if style != oldValue {
                configureLabel()
            }
        }
    }

    public override func awakeFromNib() {
        super.awakeFromNib()
        configureLabel()
    }

    public override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureLabel()
    }

    func configureLabel() {
        font = style.font
        textColor = style.textColor
    }

}

Вы используете это так:

let label = CustomUILabel()
label.style = .title
// label.style = .subtitle
person André Slotta    schedule 30.12.2018
comment
Любое предпочтительное предложение по настройке стиля с помощью инспектора атрибутов в раскадровке? - person Devarshi; 16.11.2020