У меня есть собственный класс UILabel, который автоматически масштабирует шрифт, используя метрику и размер шрифта, выбранные пользователем через Настройки> Общие> Специальные возможности> Увеличенный текст:
import UIKit
class AccessibilityLabel: UILabel {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
font = UIFontMetrics.default.scaledFont(for: font)
adjustsFontForContentSizeCategory = true
}
}
В нашем существующем, довольно большомПроект, это прекрасно работает.
Где это не работает, где шрифт установлен в коде.Когда шрифт установлен в коде, он удаляет масштабирование. Мы можем пройти и изменить весь код, в котором мы установили шрифт для его масштабирования.И, возможно, это лучший / единственный способ.
Но мне было интересно, знает ли кто-нибудь, как можно переопределить свойство font
для UILabel
, чтобы оно масштабировало его, если оно еще не масштабировано, и нене создавать бесконечный цикл.По сути, какое-то решение, при котором нам не нужно было бы просматривать существующий код и обновлять несколько мест.Просто внесите изменения в одном месте (в UILabel).
Спасибо!