Я разрабатываю приложение для планшета (Android и iOS) с Expo и React-Native.
Мне удалось сделать верстку отзывчивой, без каких-либо проблем. После запуска приложения на устройствах разного размера я заметил, что забыл о скорости реагирования на размер шрифта.
Я перепробовал каждую библиотеку npm, которую смог найти (react-native-responsive-fontsize
, react-native-cross-platform-responsive-dimensions
, react-native-responsive-fontsize
). С любым из них я столкнулся с той же проблемой: при запуске приложения, в зависимости от ориентации устройства, размер шрифта отображается по-другому. (т. е. если я открываю приложение, когда держу устройство в портретном режиме, размер шрифта заметно больше по сравнению с тем, когда я открываю приложение, когда я держу устройство в альбомном режиме - альбомный режим является ориентацией моего приложения по умолчанию). Я попытался заблокировать ориентацию экрана моего приложения в альбомной ориентации при запуске и сбросил ее до значений по умолчанию после установки моего первого компонента, но это также не помогло.
Я пришел к выводу, что это происходит потому, что все эти библиотеки используют размеры устройства для получения процентных значений того, что я им передаю, но относятся только к одному измерению (ширине или высоте), которые различаются в зависимости от исходной ориентации устройства.
Я попытался реализовать свое собственное решение, думая о чем-то, что будет основываться как на ширине, так и на высоте, а не только на одном из них, и у меня появилась эта функция:
const height = Dimensions.get('window').height;
const width = Dimensions.get('window').width;
export function proportionalSize(size) {
let aspectRatioSize = width * height;
let aspectRatioUnit = aspectRatioSize * 0.00001;
return parseFloat(size) * 0.1 * aspectRatioUnit;
}
Это работает только на устройстве, на котором я разрабатываю приложение ... размеры шрифта не будут сохранять те же пропорции на других устройствах с другим размером экрана.
Я потерял достаточно дней, изменяя размеры шрифтов всего кода, пытаясь переключаться между библиотеками. У вас есть идеи, как я могу с этим справиться или что мне не хватает? Сначала я учил, что это будет моя самая маленькая проблема, но я ошибался.
Позднее редактирование: я заметил, что моя проблема исчезла после перезагрузки приложения. Это происходит только при первом рендеринге, а после перезагрузки font-size работает нормально.
rem
вместоpx
в своем CSS? - person foxtrotuniform6969   schedule 19.07.2019