我是react-native的新手。我想做的是,适合设备的图像,并保持图像的比例。简单地我想做width : 100%
我搜索了如何使它,似乎resizeMode = 'contain'
是好的。
然而,由于我使用了resizeMode = 'contain'
,图像保持垂直居中的位置,这是我不希望的。我希望它是垂直的顶部。
我尝试使用一个插件,如react-native-fit-image,但没有运气。
我找到了图像不能自动调整大小的原因。但我还是不知道怎么做。
所以,我的问题是,什么是处理这种情况的最佳方法?
我必须手动把width, height
大小每个图像?
我想要:
- 保持图像的比例。
- 垂直顶部定位。
React原生测试代码:
https://snack.expo.io/ry3_W53rW
最后我想做的是:
https://jsfiddle.net/hadeath03/mb43awLr/
谢谢
7条答案
按热度按时间i5desfxk1#
图像垂直居中,因为您向style属性添加了
flex: 1
。不添加flex:1,因为这将填充图像到其父图像,这在本例中是不希望的。你应该总是在React Native中为图像添加高度和宽度。如果图像总是相同的,您可以使用
Dimensions.get('window').width
来计算图像的大小。例如,如果比率始终为16 x9,则高度为图像宽度的9/16。宽度等于设备宽度,因此:注意:当使用这样的实现时,当旋转设备,使用分屏等时,您的图像不会自动调整大小。如果你支持多个方向,你也必须照顾好这些动作……
如果比率不相同,则通过每个不同图像的比率动态更改9 / 16。如果你真的不介意图像被裁剪了一点,你也可以使用固定高度的封面模式:(https://snack.expo.io/rk_NRnhHb)
ca1c2owp2#
只是想给予这个
您还可以等待ImageonLayout回调函数获取其布局属性并使用它来更新尺寸。我为此创建了一个组件:
这将更新图像的尺寸以匹配屏幕的宽度。
stszievb3#
您可以将此样式应用于图像:如果将Image应用于Image标签,则Image宽度为完整图像。
q35jwt9p4#
您可以将此样式应用于图像:如果将
imageStyle
应用于Image
标签,则Image width将为100%,Image height将为300。假设您的图像代码是:
e5nszbig5#
右键点击你的图像以获得分辨率。在我的情况下 1233x882
就这些
gudnpqoy6#
我有一个组件,它可以获取图像 prop 并进行适当的调整(并且可以在
ScrollView
和require
d资产中工作)。在滚动视图中,它使用图像的高度作为高度,而不管它是否被缩放,这会导致一些多余的填充。此组件执行大小计算并重新调整图像样式,使其使用100%宽度,同时保持加载文件的纵横比。这是为了补偿
contain
,即使图像宽度为100%
,它也会在图像周围添加额外的填充(这基本上会使图像视图高度变满)。请注意,您可能试图将其作为背景,在这种情况下,
ImageBackground
无法在Android上正确呈现。使用上面的代码,我做了一些调整,创建了下面的代码,它可以正确地呈现长文本和短文本。注意如果你是和头一起使用它,你需要添加一个padding视图作为第一个子视图
f8rj6qna7#
一个简单的方法是不定义图像的高度,并将宽度设置为
100%
。但是,有必要将resizeMode
设置为contain
。参见以下示例:这样,保留了纵横比。
要删除图像上方和下方的额外空间,您可以设置
height: 100
或任何其他数字。这不会影响纵横比`