Как протестировать динамический тип (большие размеры шрифта) в симуляторе iOS

Изменить настройки динамического типа в iOS можно вручную («Настройки» > «Основные» > «Универсальный доступ» > «Увеличенный текст»).

Но, похоже, это не работает в текущем симуляторе (версия 9.3 на момент написания статьи), и выполнение этого вручную не является решением, когда требуется автоматизация.

Вопрос. Есть ли способ запустить приложение с настройками динамического типа, чтобы запустить приложение с более крупными размерами шрифта?

Примечание. Это полезно не только для тестирования пользовательского интерфейса, но и для создания снимков экрана с использованием Fastlane Snapshot с более крупными размерами шрифта.


person Clafou    schedule 11.07.2016    source источник


Ответы (5)


Начиная с Xcode 8, есть лучший вариант, чем недокументированные аргументы запуска: Инспектор специальных возможностей. Об этом рассказывается в этом докладе, и его можно найти в разделе Xcode > Open Developer. Инструмент.

Обновление для Xcode 11+

Появилась новая опция Environment Overrides. Дополнительную информацию см. в разделе этот ответ.

Инспектор специальных возможностей Xcode

person bjtitus    schedule 21.06.2017
comment
Хорошее улучшение Xcode! Спасибо - я изменил принятый ответ на этот, так как теперь это лучший подход. Но для людей, которые хотят сделать это для скриншотов Fastlane, посмотрите этот другой ответ! - person Clafou; 15.03.2018
comment
Xcode 10, похоже, отказался от параметра «Размер шрифта». Единственные варианты: (1) Инвертировать цвета, (2) Увеличить контраст, (3) Уменьшить прозрачность, (4) Уменьшить движение и (5) Полный доступ с клавиатуры. Кто-нибудь знает, была ли опция «Размер шрифта» перемещена куда-то еще? - person Gerard; 19.03.2019
comment
Если вы все еще не видите его, обязательно включите «Большой размер специальных возможностей» в настройках и выберите правильный симулятор в верхнем левом раскрывающемся списке в инспекторе специальных возможностей. Не выбирайте My mac --> Simulator, в раскрывающемся списке под Mac должен быть симулятор. - person Stanislav Goryachev; 26.08.2019
comment
Инструмент «Инспектор доступности» изменился в Xcode 11, в котором появилась новая опция в окне журнала: см. этот ответ stackoverflow.com/a/58080491 /3825084 для получения дополнительной информации. - person XLE_22; 04.10.2019

Хотя (насколько мне известно) это не задокументировано, аргумент запуска можно использовать для определения начальной настройки динамического типа.

Ключ: UIPreferredContentSizeCategoryName

Значение: одно из следующих

  • UICTContentSizeCategoryXS
  • UICTContentSizeCategoryS
  • UICTContentSizeCategoryM
  • UICTContentSizeCategoryL
  • UICTContentSizeCategoryXL
  • UICTContentSizeCategoryXXL
  • UICTContentSizeCategoryXXXL
  • UICTContentSizeCategoryAccessibilityM
  • UICTContentSizeCategoryAccessibilityL
  • UICTContentSizeCategoryAccessibilityXL
  • UICTContentSizeCategoryAccessibilityXXL
  • UICTContentSizeCategoryAccessibilityXXXL

Источник этого недокументированного ключа/значения: GitHub.

Удобный способ сделать это — добавить аргумент запуска в схему Xcode (добавьте, например, -UIPreferredContentSizeCategoryName UICTContentSizeCategoryXL в разделе «Аргументы, передаваемые при запуске»), и этот параметр будет применяться при запуске приложения в Xcode. Вы можете создать несколько схем с разными настройками динамического типа для переключения между ними.

Если целью является создание скриншотов с помощью Fastlane Snapshot, эквивалентный код выглядит следующим образом:

app.launchArguments += [ "-UIPreferredContentSizeCategoryName", "UICTContentSizeCategoryXL" ]
app.launch()
person Clafou    schedule 11.07.2016

Прежде чем сделать это в Инспекторе специальных возможностей, не забудьте включить «Увеличенный текст» в настройках моделируемого устройства: «Основные» -> «Универсальный доступ» -> «Увеличенный шрифт». В противном случае инспектор специальных возможностей не будет отображать параметр динамического шрифта.

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

person ram    schedule 20.06.2018

Начиная с iOS 10 можно динамически изменять выбор динамического типа с помощью UITraitCollection API. См. https://stackoverflow.com/a/43983241/1148702 для получения дополнительной информации.

person Tim Arnold    schedule 22.05.2017

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

Проверьте это здесь: https://medium.com/livefront/practical-dynamic-type-part-2-testing-613bb845f26b

person keehun    schedule 13.12.2018