我试图将图片适应它们所在的视图,以便我可以拥有无缝的图像网格。问题是resizeMode='contain'
似乎适合于屏幕宽度或至少某个更高级别的容器,我需要图片适应每个列表项的大小。
这里是样式和结果栅格的一个非常丑陋的示例:
样式:
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'blue'
},
item: {
flex: 1,
overflow: 'hidden',
alignItems: 'center',
backgroundColor: 'orange',
position: 'relative',
margin: 10
},
image: {
flex: 1
}
})
页面布局:
<TouchableOpacity
activeOpacity={ 0.75 }
style={ styles.item }
>
<Image
style={ styles.image }
resizeMode='contain'
source={ temp }
/>
</TouchableOpacity>
使用 resizeMode='contain'
的结果:
使用 resizeMode='cover'
的结果:
可以看到,使用cover
的图片非常大,宽度与整个屏幕一样,并且不适合立即包含的视图。
更新1:
通过对图像应用缩放变换并从中心缩小,我能够实现接近我想要的结果:
变换如下:
transform: [{ scale: 0.55 }]