React native 按物理单位(厘米、英寸)调整尺寸

React native 按物理单位(厘米、英寸)调整尺寸,react-native,screen,React Native,Screen,我正在为我的应用程序实现一个“标尺”功能,标尺尺寸/刻度(以厘米为单位)在多台设备上保持一致是至关重要的。也就是说,1个“滴答”必须始终等于1厘米。然而,我在任何文档中都没有找到一种像CSS中那样使用真实单位(厘米,英寸)来调整组件大小的方法;我也没有找到准确获取屏幕大小(英寸或厘米)或DPI的方法 有没有办法在React Native中使用厘米/英寸或获得真正的屏幕DPI?1英寸=160 dp(始终) 请注意,1英寸始终为160dp,与屏幕大小无关。dp(密度无关像素)是1/160英寸的物理距

我正在为我的应用程序实现一个“标尺”功能,标尺尺寸/刻度(以厘米为单位)在多台设备上保持一致是至关重要的。也就是说,1个“滴答”必须始终等于1厘米。然而,我在任何文档中都没有找到一种像CSS中那样使用真实单位(厘米,英寸)来调整组件大小的方法;我也没有找到准确获取屏幕大小(英寸或厘米)或DPI的方法


有没有办法在React Native中使用厘米/英寸或获得真正的屏幕DPI?

1英寸=160 dp
始终

请注意,1英寸始终为160dp,与屏幕大小无关。dp(密度无关像素)是1/160英寸的物理距离

React Native使用dp(密度独立像素)作为样式设置的单位

所以,如果你写:

<View style={{ height: 160, width:160, backgroundColor: 'red }}>
</View>

1英寸=160 dp
始终

请注意,1英寸始终为160dp,与屏幕大小无关。dp(密度无关像素)是1/160英寸的物理距离

React Native使用dp(密度独立像素)作为样式设置的单位

所以,如果你写:

<View style={{ height: 160, width:160, backgroundColor: 'red }}>
</View>

react native中的维度属性是无单位的,因此这些属性在react native中不可用。最好使用PixelRatio的getPixelSizeForLayoutSize(),如下所示:

您还需要有解决方案的像素密度(dpi)和公式:


由于物理限制,当您试图在屏幕上将1cm的像素放入可能并不总是等于1cm的小像素时,仍然可能会遇到一些奇怪的情况,即像素被分成两半和其他舍入错误。

react native中的维度属性是无单位的,因此react native中不提供这些属性。最好使用PixelRatio的getPixelSizeForLayoutSize(),如下所示:

您还需要有解决方案的像素密度(dpi)和公式:


由于物理限制,当您试图将1cm的像素与屏幕上可能不总是等于1cm的小像素相匹配时,您仍然可能会遇到一些奇怪的情况,即像素被分割成两半,以及其他舍入错误。

实际上这就是问题所在,160 dp并不总是1英寸。在我的测试设备中,我得到1英寸~=140dp@PedroAffonso你在模拟器上测试吗?如果是这样的话,模拟器的尺寸可能不符合比例。事实上,这就是问题所在,160 dp并不总是1英寸。在我的测试设备中,我得到1英寸~=140dp@PedroAffonso你在模拟器上测试吗?如果是这样,模拟器的尺寸可能达不到比例。