Помимо использования системы гибкого макета, я до сих пор писал функцию масштабирования, которая адаптирует поля и размеры шрифта к разным размерам экрана.
Пример вертикальной маржи:
const HEIGHT_SCALE = 667; // this is the standard iphone 7 height, but you can use a different height as your standard height.
const scaleMargins = (margin) => {
const ratio = margin / HEIGHT_SCALE;
const newScale = Math.round(ratio * SCREEN_WIDTH);
return newScale;
}
const MARGIN_15 = scaleMargins(15);
Пример использования:
<Text style={{ marginTop: MARGIN_15, marginBottom: MARGIN_15 }}>
Your Text with adaptive margins goes here
</Text>
Преимущества
Функцию scaleMargins
можно также адаптировать для получения адаптивных размеров шрифта или горизонтальных полей / отступов.Поэтому просто используйте другой коэффициент масштабирования.Для горизонтального поля вы можете использовать эту функцию масштабирования:
const WIDTH_SCALE = 375; // Standard iphone 7 screen width. You can get it from Dimension.get('screen').width
const scaleVerticalMargins = (margin) => {
const ratio = margin / WIDTH_SCALE;
const newScale = Math.round(ratio * SCREEN_WIDTH);
return newScale;
}
Еще одно преимущество: вы можете создать глобальный класс стилей, в котором вы будете вычислять все необходимые поля и т. Д. Один раз для всего приложения.