Как прописать текстовое свойство UILabel из подкласса Swift - PullRequest
0 голосов
/ 03 мая 2018

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

Однако проблема заключается в том, что когда я использую uppercased() или capitalized в подклассе для текстового свойства UILabel, оно не работает во время выполнения. Что странно, так это то, что он корректно отображается на раскадровке (с @IBDesignable), но во время выполнения показывает некапитализированную строку.

Например, у меня есть код, подобный этому в подклассе UILabel:

textColor = ...
font = UIFont(name: "Avenir-Medium", size: 12.0)
text = text!.uppercased()

А затем в контроллере вида у меня есть код, подобный этому:

label_noWeightMessage.text = "No weight logs this week..."

Цвет и шрифт применяются правильно, за исключением изменения регистра. Я что-то здесь упускаю?

В раскадровке текст отображается как «НЕТ ВЕСА ЖУРНАЛОВ НА ЭТОЙ НЕДЕЛЕ ...» но в симуляторе во время выполнения он возвращается к исходному случаю.

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

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Текст не устанавливается в верхний регистр при его изменении. Преобразовать в верхний регистр в разделе didSet свойства text в переопределенном UILabel.

Если вы хотите изменить текст для надписей, для которых их текст настроен с помощью Interface Builder, также переопределите awakeFromNib:

class CustomLabel: UILabel {
    override var text: String? {
        didSet {
            super.text = text?.uppercased()
        }
    }

    override func awakeFromNib() {
        super.awakeFromNib()

        super.text = text?.uppercased()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...