React Native - Image

544 阅读2分钟

无论是原生的Native或者跨平台的Native,使用Image的情况非常多,今天主要练习学习了加载网络图片,和加载Xcode工程中images.xcassets中得图片。

废话不多说,上代码:

type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.box}>
          <Image style={styles.netImg} source={{uri:"http://ncicar.cn-bj.ufileos.com/ncicar/index01.png"}} resizeMode={Image.resizeMode.contain} />
          <Image style={styles.netImg} source={{uri:'user_bg'}} resizeMode={Image.resizeMode.contain} />
      </View>
    );
  }
}

const styles = StyleSheet.create({
    box: {
        flex:1,
        marginTop:44,
        justifyContent:'center',
        alignItems:'center',
    },

    netImg:{
        marginTop:10,
        width:300,
        height:200,
    }
});

RN中使用Image,可以设置图片的显示样式,分别为:

  • auto:使用启发式算法来在resize和scale中自动决定。

  • resize: 在图片解码之前,使用软件算法对其在内存中的数据进行修改。当图片尺寸比容器尺寸大得多时,应该优先使用此选项。

  • scale:对图片进行缩放。和resize相比, scale速度更快(一般有硬件加速),而且图片质量更优。在图片尺寸比容器尺寸小或者只是稍大一点时,应该优先使用此选项。


注意点:

   1、开发iOS项目的时候,图片资源存放在images.xcassets中,开发Android的时候,在android/app/src/res文件夹下面创建一个drawable文件夹,然后放入图片文件,重新打包项目运行即可。

// iOS引用
<Image source={{uri: 图片名称'}} style={{width: 40, height: 40}} />

// Android引用
<Image source={{uri: 'asset:/app_icon.png'}} style={{width: 40, height: 40}} />

这种方法提供非安全的检查,取决于你去确保这些图片是可以访问得到,而且,不得不手动指定图片的尺寸。

2、如果不指定加载网络图片的高度(会根据高度来适配正确的宽度,则显示不出加载的图片。

样式如下:



以上加载图片的方式为加载App中的图片和加载网络上的图片,那么如何加载项目中的图片呢?

<Image source={require('图片名称')} style={{width: 40, height: 40}} />

完美实现!