до сих пор я использовал фиксированные размеры шрифта, например:
Text("Example")
.font(.system(size: 24 weight: .medium, design: .rounded))
Сейчас я пытаюсь реализовать динамические размеры шрифта, поэтому он масштабируется с различными режимами доступности. Я нашел это, в котором говорится: «Если вы используете iOS 14 или более позднюю версию, вы обнаружите, что ваши пользовательские шрифты автоматически масштабируются без дополнительной работы с вашей стороны». У меня это работает, но теперь я не могу найти способ сделать шрифт .rounded
(поскольку .fontDesign
— это iOS 16+, а я ориентируюсь на iOS 15).
Кроме того, что я должен использовать в качестве первого параметра (имя шрифта) для системного шрифта? Я пробовал UIFont.systemFont
и т. д., но это не сработало. Я даже не уверен на 100%, что SF Pro
здесь правильное имя:
Text("Example")
.font(.custom("SF Pro", size: 24))
Возможно, я делаю это совершенно неправильно каким-то другим, непонятным мне образом. Является ли это правильным подходом к динамическому размеру шрифта для обеспечения доступности — использовать .custom
, указать размер по умолчанию (для размера шрифта по умолчанию) и позволить iOS масштабировать его соответствующим образом?
Возможно. Я также видел .title
, .body
и т. д. (думаю, есть способ установить для них размеры по умолчанию?) — но я также не могу найти способ использовать .rounded
с этим. Похоже, я не могу добавить никаких дополнительных параметров и не могу использовать .fontDesign
для iOS 15.
Весь смысл использования .title
и других стилей в том, что вы не указываете никаких других свойств. Вы получаете шрифт соответствующего размера и стиля на основе указанного стиля и настроек специальных возможностей пользователя. Поэтому нет смысла указывать стиль и размер. Стиль автоматически задает относительный размер. И если пользователь изменит настройки во время работы вашего приложения, ваше приложение автоматически отобразит изменения.
Итак, как указать стиль? Невозможно установить это в пользовательских настройках — должен быть способ установить вес и .rounded
в коде, верно?
Я понял, что если убрать параметр .weight
и использовать .largeTitle
и т. д., то это работает — и я могу задать вес отдельно:
.font(.system(.largeTitle, design: .rounded))
.fontWeight(.bold)
Как установить размеры по умолчанию для .largeTitle
, .body
и т. д.?
Вы не устанавливаете размер при использовании стилей. В этом весь смысл. Пользователь выбирает общий размер шрифта в настройках.
Ах хорошо. Итак, просто чтобы уточнить, означает ли это, что существует ограниченное количество точных размеров шрифта, которые вы можете использовать в любом приложении iOS (которое использует динамическое масштабирование)? т.е. никакая настройка не может быть выполнена за пределами .title
, .body
, .callout
и т. д. — даже для небольшого изменения размеров шрифта, чтобы он лучше соответствовал тому, что они есть (на пару размеров pt и т. д.)?
Например, вы ищете что-то помимо
.font(.title)
?