Добавьте новый шрифт в свое приложение для iOS сегодня
Некоторое время назад мы заглянули в Dynamic Type с системным шрифтом. На этот раз мы собираемся проверить, как использовать динамический тип с настраиваемым шрифтом в наших приложениях для iOS. Apple предоставляет отличные API-интерфейсы, чтобы сделать наши приложения доступными, даже если мы используем собственные стили шрифтов.
Добавить собственный шрифт в приложение
Во-первых, нам нужно добавить в проект наш собственный шрифт. Есть несколько шагов, поэтому давайте рассмотрим их.
Нам нужно добавить файл шрифта в проект приложения Xcode. В настоящее время поддерживаются файлы шрифтов True Type (.ttf) и Open Type (.otf). Просто перетащите файлы в свой проект XCode. Будьте осторожны и выберите цели, в которых вы хотите использовать этот шрифт:
Если вы забудете добавить шрифт к определенному целевому членству в вашем проекте Xcode, вы столкнетесь с проблемой, когда файл шрифта не будет найден:
Чтобы исправить это, просто установите флажок и добавьте его в назначенную цель:
После этого перейдите к файлу Info.plist
и добавьте новую запись с ключом Fonts provided by application
. Здесь нам нужно предоставить массив со всеми файлами шрифтов, которые мы добавили в проект.
Убедитесь, что файлы шрифтов были добавлены и что мы можем использовать этот фрагмент кода для печати всех доступных семейств и имен шрифтов:
Просто вставьте этот код в свой AppDelegate
didFinishLaunchingWithOptions
, и когда вы запустите приложение, оно напечатает семейства шрифтов и названия в консоли.
Использовать собственный шрифт с динамическим типом
Чтобы использовать динамический тип с пользовательскими шрифтами, нам нужно использовать UIFontMetrics
. Это служебный объект, который помогает получить пользовательские шрифты, масштабируемые в соответствии с размером текста и настройками специальных возможностей. Другими словами, этот класс помогает нам отображать настраиваемый шрифт с учетом пользовательского шрифта и настроек доступности.
Для этого нам нужно инициализировать экземпляр настраиваемого шрифта с конкретным размером. Чтобы определить конкретный размер, мы можем использовать таблицу размеров динамического типа из документации Apple.
Допустим, мы добавили ярлык с большим заголовком. Это означает, что нам нужно использовать шрифт размером 34 пункта. Затем мы используем UIFontMetrics
и инициализируем экземпляр для определенного стиля текста. В конце мы устанавливаем шрифт для нашей метки с помощью функции scaledFont
и предоставляем собственный шрифт:
Обновление при изменении размера текста
Чтобы проверить, как все работает, мы можем включить размер текста в Xcode Environment Overrides:
Если вы его измените, вы увидите, что в нашем приложении ничего не происходит. Чтобы включить автоматическое изменение, нам нужно установить adjustsFontForContentSizeCategory
. Он указывает, что объект должен автоматически обновлять свой шрифт при изменении категории устройства.
label.adjustsFontForContentSizeCategory = true
Теперь мы можем полностью протестировать и увидеть, что шрифт нашей метки настраивается в соответствии с размером текста и настройками доступности.
TL;DR
Поддержка динамического типа с помощью настраиваемого шрифта может показаться сложной задачей, но это не обязательно. Используя служебный объект UIFontMetrics
, мы можем масштабировать наш настраиваемый шрифт в соответствии с тем, что пользователь указал в настройках размера текста или специальных возможностей.
Ресурсы
- Пример приложения
- Создание приложений с динамическим типом
- Как изменить размер пользовательского шрифта с помощью UIFontMetrics
- Использование пользовательского шрифта с динамическим типом
- Рекомендации по размеру шрифта iOS
- Добавление пользовательского шрифта в ваше приложение
- Типографика - Руководство по человеческому интерфейсу