React Native image:为啥父视图在设置为“包含”时与“覆盖”保持相同的高度?

Posted

技术标签:

【中文标题】React Native image:为啥父视图在设置为“包含”时与“覆盖”保持相同的高度?【英文标题】:React Native image: why does parent view stay same height as 'cover' when set to 'contain'?React Native image:为什么父视图在设置为“包含”时与“覆盖”保持相同的高度? 【发布时间】:2022-01-10 02:40:09 【问题描述】:

我的 React Native 应用中有以下图片

我想把这张图片放在一个父元素里面,上面或下面没有空格,我希望这张图片不会超出屏幕的左侧或右侧

当我有这样的代码时

<View style=
    marginTop: 100,
    borderWidth: 2,
    borderColor: 'red'
>
    <Image
        style=
            width: '100%'
        
        source=require('@images/swoosh-02.png')
    />
</View>

我明白了,因为 resizeMode 的默认值是 cover

当我把它改成这个时(添加resizeMode='contain'

<View style=
    marginTop: 100,
    borderWidth: 2,
    borderColor: 'red'
>
    <Image
        style=
            width: '100%'
        
        resizeMode='contain'
        source=require('@images/swoosh-02.png')
    />
</View>

图像已成功水平包含,但父元素的高度与resizeModecover 时的高度相同。

我怎样才能让父元素垂直收缩以仅包含图像而没有额外的顶部/​​底部填充?

【问题讨论】:

【参考方案1】:

containcover 的区别是:

resizeMode='contain' = 均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)都等于或小于视图的相应尺寸(减去填充)。

resizeMode='cover' = 均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)都等于或大于视图的相应尺寸(减去填充)。

也许你应该尝试在你的视图中应用 height

阅读this article,应该会对你有所帮助。

【讨论】:

以上是关于React Native image:为啥父视图在设置为“包含”时与“覆盖”保持相同的高度?的主要内容,如果未能解决你的问题,请参考以下文章

Image Picker 在 React Native 应用程序中不起作用,为啥?

为啥视图不显示在 react-native 中?

有没有办法可以将 Text 组件的全部内容包装在 react-native 中的父视图中?

React-Native 图像高度(全宽)

如何在 iOS 上的 React Native 中的 ImageBackground 上的父视图中显示文本元素?

在collaut组件react-native中删除图像和视图之间的空间