Установите defaultProps глобально, чтобы определить размер шрифта и параметры специальных возможностей.
У Apple есть функция, с помощью которой люди, использующие очки для чтения или иным образом слабовидящие, могут регулировать размер текста на своих устройствах. Я видел, что это называется динамическим масштабированием или просто масштабированием шрифта, и это отличная функция, которая действительно важна для людей, чтобы они могли правильно использовать свои устройства.
При этом я не смог найти краткого и точного объяснения того, как работать с этой функцией в React Native. В частности, я хочу временно отключить динамическое масштабирование, так как я получаю отчеты об ошибках, в которых текст вытекает за пределы экрана и нажимает кнопки туда, где они также исчезают.
Самое быстрое решение на данный момент — отключить его по умолчанию во всем приложении, чтобы люди действительно могли использовать его, как ожидалось, пока я работаю над тем, как поддерживать его более изящным способом, чем просто заставлять Apple делать весь текст в приложение ГИГАНТ.
Параметры размера текста на iPhone можно найти в разделе «Настройки» > «Универсальный доступ» > «Дисплей и размер текста» > «Увеличенный текст» (если вы хотите проверить это сами)
Итак, если вы хотите отключить/игнорировать динамическое масштабирование текста на iOS в React Native, вот как это сделать. В корневом компоненте вашего приложения (в моем случае это App.js, расположенный в корневом каталоге) включите в конструктор следующий код:
// You'll probably have other things imported as well, but make sure Text is one of them import { Text } from 'react-native'; ... constructor() { super(); Text.defaultProps = Text.defaultProps || {}; // Ignore dynamic type scaling on iOS Text.defaultProps.allowFontScaling = false; }
Обратите внимание, что нам нужно вручную настроить defaultProps для объекта Text. Все, что мы делаем, это говорим: «Если уже есть defaultProps, круто, мы их сохраним. Если нет, мы установим его на пустой объект». Судя по ответам на форумах, которые я видел, кажется, что это причуда более поздних обновлений React Native, поэтому пока мы будем иметь с этим дело. С этой настройкой каждый раз, когда вы используете текст в своем приложении, по умолчанию будут использоваться эти настройки.
Это довольно простое решение, для понимания которого потребовалось немного погуглить, поэтому я надеюсь, что оно поможет вам собрать его в одном месте.
Как я упоминал выше, я определенно предлагаю всем нам выяснить, как более изящно работать с этой функцией, чтобы поддерживать доступность по всем направлениям, но если она вызывает проблемы и вам нужно отключить ее по умолчанию, пожалуйста.