React Native:图像 "contain" 的行为与 "cover" 相同

React Native: Image "contain" is behaving the same as "cover"

我有以下图像,我想将其作为 header 放在我的 React Native 应用程序中:

我希望 <ScrollView> 中的所有文本都排在 header 后面。我已经能够使用以下代码执行此操作:

import React, { Component } from 'react';
import { Text, View, ScrollView, ImageBackground} from 'react-native';

export default class Login extends Component {
  render() {
    return (
      <View style={{
          flex: 1,
          justifyContent: "center",
          alignItems: "center"
        }}>
          <View
            style={{
              position: "absolute",
              width: "100%",
              top: 0
            }}
          >
            <ImageBackground
              source={require('../../images/swoord-top.png')}
              style={{
                flex: 1,
                resizeMode: "contain",
                justifyContent: 'center'
              }}
            >
              <View style={{
                backgroundColor: 'green',
                height: 500,
                width: 25
              }}></View>
            </ImageBackground>
          </View>
        <ScrollView style={{backgroundColor: 'pink', zIndex: -1}}>
        <Text style={{fontSize: 42}}>
          Lorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolorLorem ipsum dolor
        </Text>
      </ScrollView>
      </View>
    );
  }
}

看起来像这样:

左侧的绿色条定义 header 的高度。问题是 <BackgroundImage> 会垂直拉伸以适合 header 容器,并从侧面溢出,即使我指定了 resizeMode: cover.

我想知道的:

如何使背景图像压缩以水平适合屏幕?

<ImageBackground /> 不像 <Image /> 那样工作,所以 resizeMode 包含将不起作用,您可以为 <ImageBackgroud/> 的父视图提供固定的高度和宽度,或者您可以使用 <Image /> 和绝对位置来实现这一点。

不是在样式中提供 resizemode,而是将其用作:-

<ImageBackground resizeMode={"contain"} />

Image 和 ImagebackGround 具有不同的属性。