React 本机响应单元
React native responsive units
我一直在 youtube 上观看 Rect Native 教程,每个人都使用 padding:20 或 fontSize:18 等单位
您在专业应用程序中也是这样做的吗?什么是理想的做法?这是自动响应吗?
不,这不是自动响应。如果我们设置 padding:20
,那么无论我们使用什么 phone,该组件的填充都会保持在 20
。字体大小也是如此,即使它们是根据我们处理的像素密度进行缩放的。
必须手动实现响应式设计,这可以通过使用 Dimensions
来完成,如下所示。
import { Dimensions } from 'react-native'
const width = Dimensions.get('window').width
const height = Dimensions.get('window').height
我们现在可以根据我们设备的 width
使用不同的填充。
padding: width > 320 ? 20 : 15
当涉及到总体布局时,flexbox
负责响应性,例如假设我们在屏幕上有三个 flexDirection: 'row'
的元素,并且我们为所有这些元素设置 flex:1
,那么无论我们的屏幕宽度是多少,可用的 space 将在它们之间平均分配。高度也是如此。
可能建议创建一个单独的 Fonts
文件,将字体大小和类似常量保存在一个公共位置,这样我们只需更改一次。
import { Dimensions } from 'react-native'
const width = Dimensions.get('window').width
const height = Dimensions.get('window').height
export Fonts = {
h1: width > 320 ? 18 : 15,
h2: width > 320 ? 16 : 14,
...
}
以上内容处理响应式字体大小,我们可以在所有其他屏幕中使用它,例如
<Text style={{fontSize: Fonts.h1}}>I am a header</Text>
我一直在 youtube 上观看 Rect Native 教程,每个人都使用 padding:20 或 fontSize:18 等单位
您在专业应用程序中也是这样做的吗?什么是理想的做法?这是自动响应吗?
不,这不是自动响应。如果我们设置 padding:20
,那么无论我们使用什么 phone,该组件的填充都会保持在 20
。字体大小也是如此,即使它们是根据我们处理的像素密度进行缩放的。
必须手动实现响应式设计,这可以通过使用 Dimensions
来完成,如下所示。
import { Dimensions } from 'react-native'
const width = Dimensions.get('window').width
const height = Dimensions.get('window').height
我们现在可以根据我们设备的 width
使用不同的填充。
padding: width > 320 ? 20 : 15
当涉及到总体布局时,flexbox
负责响应性,例如假设我们在屏幕上有三个 flexDirection: 'row'
的元素,并且我们为所有这些元素设置 flex:1
,那么无论我们的屏幕宽度是多少,可用的 space 将在它们之间平均分配。高度也是如此。
可能建议创建一个单独的 Fonts
文件,将字体大小和类似常量保存在一个公共位置,这样我们只需更改一次。
import { Dimensions } from 'react-native'
const width = Dimensions.get('window').width
const height = Dimensions.get('window').height
export Fonts = {
h1: width > 320 ? 18 : 15,
h2: width > 320 ? 16 : 14,
...
}
以上内容处理响应式字体大小,我们可以在所有其他屏幕中使用它,例如
<Text style={{fontSize: Fonts.h1}}>I am a header</Text>