Что означает предупреждение «автоматическая настройка шрифта требует использования стиля текста динамического типа»?

100

Я получаю следующее предупреждение:

"автоматически настраивает шрифт требует использования стиля текста динамического типа"

Скриншот добавлен

От которого не могу избавиться, предупреждение горит main.storyboard.

Я проверил каждый UILabelв , Identity Inspectorчтобы убедиться сделать «автоматически подстраивает шрифт» снят.

К. Закон
источник
1
Я подозреваю, что «для автоматической настройки шрифта требуется использование стиля текста с динамическим типом», вероятно, для его динамической настройки.
shallowThought
7
Вы хотите использовать динамический шрифт («Основной текст», «Заголовок», «Подзаголовок») ИЛИ, что более вероятно, выключите Automatically Adjusts Fontи включите Autoshrink.
bshirley

Ответы:

53
  1. Откройте свою раскадровку как исходный код
  2. Найдите ключ "adjustsFontForContentSizeCategory"
  3. Проверьте, какой объект имеет этот параметр, и снимите флажок «Динамический тип» в построителе интерфейса.
аялцин
источник
21
В моем случае у меня есть это предупреждение, но adjustsFontForContentSizeCategoryключ не отображается в исходном коде.
Chris Prince
Я думаю, что теперь он работает (Xcode 11), просто щелкнув предупреждение, и оно выберет ярлык оскорбления. (Так что вы можете избежать шагов исходного кода)
garafajon
@ChrisPrince, ты решил это?
ScottyBlades
34

Я только что изменил стиль текста на Тело и предупреждение исчезает.

Просто потому, что это textStyle динамического типа

См. Список предопределенных поддерживаемых динамических типов textStyle -

введите описание изображения здесь

разъем
источник
1
Если bodyизменить его на, похоже, он потеряет возможность выделять текст жирным шрифтом.
btrballin 01
31

У меня такая же проблема. Даже после того, как я открыл раскадровку как источник и удалил ключ «adjustsFontForContentSizeCategory», сохранил и очистил проект, он все равно будет отображаться.

Итак, я:

  1. Убрал проект
  2. Закрытый Xcode
  3. Удалено содержимое папки производных данных
  4. Повторно открыт Xcode и перестроен

Это прошло. :)

Spilly
источник
4
Шаг 1: нажмите ⇧⌥⌘K, чтобы очистить проект и производные данные. Пропустить шаг 3.
Mojo66
1
хммм, ⇧⌥⌘K очищает папку сборки внутри производных данных приложения. Но он не удаляет всю папку производных данных. Этого достаточно? Или мы исполняем обычный «xCode Voodoo Dance», как описано выше: D
Yaro
Voodoo Dance работал на меня. У меня была такая же проблема и для устаревших Push Segues. Я вручную изменил каждый переход и ярлык, но предупреждения не исчезли. Удаление папки DerivedData исправило это.
danomatika
26

Похоже, это ошибка в Xcode. Вот что я сделал, чтобы это исправить:

  1. Измените шрифт в метке, которая показала ошибку, на динамический тип, как предлагается.
  2. Установите флажок «Автоматически настраивать шрифт».
  3. Скомпилируйте и запустите проект (ошибка исчезнет)
  4. Снимите флажок "Автоматически настраивать шрифт".
  5. Верните шрифт к предыдущему параметру, который вызвал ошибку
  6. Восстановить проект

Ошибка все еще исчезла.

К. Закон
источник
2
Я согласен. Дважды и трижды проверяли мои файлы и даже проверяли XML / исходный код - его еще не было, XCode настаивает на том, что есть (даже после «очистки»). Как раздражает.
Джош
4
I changed the font in the label that showed the error, to a dynamic type,- Я не вижу ни одной опции, которая выглядела бы так, как dynamic typeв шрифтах. Предложения?
Chris Prince
Сейчас я использую системный шрифт. Я использовал нестандартный шрифт для некоторых этикеток, что и вызвало проблему. Если вы используете динамические шрифты Google в Xcode, вы можете найти список других динамических шрифтов. Небольшое исследование имеет большое значение. Удачи.
K. Law
3
Привет @ K.Law, спасибо за ответ, но Xcode генерирует несколько одинаковых предупреждений, и все представления находятся в Intro.storyboard. Когда я щелкнул предупреждение, Xcode просто покажет раскадровку, а не конкретный элемент.
elia
17

Если флажок «Автоматически настраивает шрифт» установлен для не динамического шрифта, появится это предупреждение. Либо снимите флажок на этикетке с нарушением, либо используйте динамический тип шрифта.

введите описание изображения здесь

Донован Кинг
источник
3
В моем случае этот флажок не установлен, но я получаю предупреждение.
Chris Prince
20
Как определить, является ли ваш шрифт «нединамичным»?
user664939
1
@ user664939 Нединамические шрифты могут изменять семейство и стиль. Динамические шрифты не могут изменять семейство и стиль. Он получит значение по умолчанию в соответствии с размером. вы можете установить семейство и стиль из раскадровки -> инспектора атрибутов -> шрифта.
sn86
5
@ user664939: вместо выбора конкретного шрифта вы выбираете «тип» шрифта. Щелкните отмеченную буквой «T» в раскрывающемся списке «Шрифт». В открывшемся окне щелкните стрелки справа от раскрывающегося списка «Шрифт». Выберите «Стиль текста» из списка внизу. См. Раздел «Визуальный дизайн», «Типографика» HIG для получения информации о размерах пунктов и т. Д., Связанных с каждым стилем текста.
Leanne
10
  1. Откройте раскадровку, щелкните правой кнопкой мыши раскадровку в навигаторе файлов.

введите описание изображения здесь

  1. Найдите (команда F) и удалите экземпляры adjustsFontForContentSizeCategory="YES"
СкоттиБлейдс
источник
1
В моем Xcode (11.1) нет поля «Автоматически настраивать шрифт». Все остальное перепробовал, ничего не получилось, кроме этого - 0 голосов. Thx
DrWhat