Улучшенное именование UIFont | Кодементор

В предыдущий пост Я говорил о более простом способе создания UIFonts:

extension UIFont {

   static func regular(_ size: CGFloat) -> UIFont {
      return .systemFont(ofSize: size, weight: .regular) // Or any other font.
   }
  
   static func medium(_ size: CGFloat) -> UIFont {
      return .systemFont(ofSize: size, weight: .medium)
   }

}

Хотя это действительно улучшает использование, это не влияет на повторяемость нашего кода. Обычно мы используем один и тот же шрифт в нескольких местах:

let titleLabel = UILabel(frame: .zero)
titleLabel.font = .medium(16)

// [...] Another part of the app

let otherTitleLabel = UILabel(frame: .zero)
otherTitleLabel.font = .medium(16)

Это означает, что если мы когда-нибудь захотим изменить размер заголовка, нам придется найти все места и выполнить замену. Обычно вес и размер связаны с типом элемента, как и заголовок, но не всегда — это вызовет еще больше головной боли.

Следуя методам DRY, мы могли бы улучшить это, создав .title шрифт:

extension UIFont {

  @nonobjc static let title = UIFont.medium(16)

}

Теперь сайт вызова будет выглядеть лучше с семантической точки зрения:

let titleLabel = UILabel(frame: .zero)
titleLabel.font = .title

// [...] Another part of the app

let otherTitleLabel = UILabel(frame: .zero)
otherTitleLabel.font = .title

И в будущем, если мы захотим изменить размер заголовка, нам просто нужно будет изменить static имущество 👍🏻.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *