我使用react-native-dimension
库来使UI响应如下:
const{width,height} = Dimensions.get('window');
在我的style.js文件中:
imageBackgroundLandscape:{
width:height,
height:width
},
imageBackgroundPortrait:{
width:width,
height:height
}
问题是,当我旋转屏幕时,宽度和高度变量已经得到了以前的值!例如,在纵向模式下,我的变量是:
width : 800
height: 1280
当我旋转屏幕时,变量是:
width : 800 // previous value
height: 1280 // previous value
另外,我使用react-native-orientation来确定屏幕的模式,我想知道当我旋转设备时,如何自动改变它们的值(宽度,高度),或者有没有其他的库可以做到这一点?
先谢了。
7条答案
按热度按时间fcg9iug31#
我通常使用以下代码处理
height, width
的混淆:使用
actualDimensions
,而不是从Dimensions中要求高度和宽度,为了优雅地管理方向,您还应该尝试使用this库。Dimensions
在JS包加载到应用程序之前加载,因此建议为每个render
动态获取height, width
。您可以在此处阅读gpfsuwkq2#
我通常使用Flexbox来安排我的组件的布局。它帮助它们响应。也许你也可以给予一试。
Layout with Flexbox
q0qdq0h23#
您可以使用这些步骤使UI响应。
r1zk6ea14#
事实上,你只做对了一半的任务。你从
Dimensions
那里得到了width
和height
,这是正确的,但是react-native
如何理解你的方向变化呢?首先,您的代码应该理解方向的变化,然后设置一个回调函数来改变应用程序的状态,以实现新的
width
和height
。糟糕的是,我不知道
react-native
是否能用它的内置函数来理解方向的变化,所以我使用这个库来理解方向的变化,然后我使用setState
来重新渲染代码。当然,我把
width
和height
放在组件的state
里面。如果要锁定方向更改,请使用this library。
uz75evzq5#
首先:
你遇到这个问题是因为你忘记了在方向改变时再次调用
const{width,height} = Dimensions.get('window');
。为了在方向改变后得到width
和height
的最新值,你必须再次调用Dimensions.get('window')
函数,并从它的输出中得到宽度和高度。其次:
您可以只使用一个库(react-native-styleman),而不是使用多个库,这样您就可以非常轻松地处理此类事情:
下面是使用react-native-styleman时的代码。
bfhwhh0e6#
我使用的是react-native-responsive-screen。它也适用于方向更改
用途
v6ylcynt7#
最简单,React超快!
这个方法很神奇,因为它考虑了当前用户屏幕大小的高度和宽度--也就是屏幕的长宽比。它会让你的代码在所有屏幕上看起来都很漂亮。