68. Адаптивный шрифт в SwiftUI
SwiftUI по умолчанию поддерживает dynamic font, достаточно использовать стандартные шрифты типа .font(.title), и все будет красиво. В этой статье на примере реального проекта покажу как настроить кастомный шрифт, чтобы он автоматически адаптировался к настройкам размера шрифта на девайсе.
С чего начинаем
Код для текстовой вьюхи
private var agreementAndPolicyDisclaimerView: some View {
Text(.init(authDisclaimer))
.foregroundStyle(.dtContentSecondary)
.font(.calloutReg) // <- тут настриваем шрифт
.frame(maxWidth: .infinity, alignment: .leading)
.tint(.dtAccentBlue)
.padding(.horizontal, 20)
}
Код для шрифта
public static var calloutReg: Font {
Font(UIFont.calloutReg)
}
UIFont.calloutReg - это экстеншен для обращения к шрифту с использованием этого инициализатора, ничего хитрого.
К чему приходим
Новый код для шрифта
public static var calloutReg: Font {
.custom(UIFont.font1RegularName, size: 14)
}
Все очень просто - используем этот инициализатор, а передаем в него название шрифта и размер, прямо как в случае с UIFont.
Дополнительно
Если у вас минимальный таргет iOS 14 или выше, то можно использовать еще один инициализатор, чтобы более точно настроить стиль шрифта (при необходимости).
Заключение
Возможность менять размер шрифта для девайса предоставляется из коробки, а мы как iOS-разработчики можем адаптировать наши приложения, чтобы пользователю было удобнее, при этом с нашей стороны нужно немного усилий - и это классно 👍.
Рекомендую ознакомиться с официальной статьей от Apple, там больше деталей.
Другие мои статьи можно почитать тут.