无法在React Native中显示图像

时间:2016-06-30 05:02:25

标签: ios react-native

我使用react-native 0.28.0

我试图根据本教程在iPhone模拟器上显示图像:http://www.appcoda.com/react-native-introduction/

var styles = StyleSheet.create({
image: {
    width: 107,
    height: 165,
    padding: 10
  }
}

var imageURI = 'http://books.google.com/books/content?id=PCDengEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api'

然后在render()函数中添加:

<Image style={styles.image} source={{uri:imageURI}} />

为图像分配的空间在那里,但图像未显示。

15 个答案:

答案 0 :(得分:35)

希望以下解决方案可以为您提供帮助 - 所有这些都可以用于图像

<强> 1。 HTTPS-解决方案:

  
      
  1. 您的图片由URI提供 - source={{uri:imageURI}}
  2.   
  3. 示例:source={{uri: 'https://i.vimeocdn.com/portrait/58832_300x300.jpg'}}
  4.   
  5. 重要提示: 别忘了将剪辑设置两次:{{}}
  6.   

<强> 2。 HTTP的解决方案:

  
      
  1. 如果您想要http,请查看以下解决方案 - HTTP Github issue
  2.   
  3. 解决方案: - HTTP-Solution
  4.   

第3。本地图像

  
      
  1. 保存:为图像创建一个新文件夹并将其保存在本地(文件夹:图像)
  2.   
  3. 要求:使用语法
  4. 要求您在本地保存的图片   

var yourPicture = require ('./images/picture.jpg');

  • 同一文件夹的表示法(&#39; ./')
  • 上述文件夹的符号(&#39; ../')
  • 上述更多文件夹的表示法(&#39; ../../../')
  
      
  1. 使用:在渲染功能中使用您的图像
  2.   
render(){
    return(
        <Image source={yourPicture}/>
    )
}

图片的样式与您描述的一样

答案 1 :(得分:14)

除了Jonathan Stellwag的回答之外,第一个解决方案仅在URI使用https或设置App Transport Security时才有效。

请参阅Can't show Image by URI in React Native iOS Simulator

答案 2 :(得分:10)

添加图片代码并使用uri时,您需要检查以下内容:

  • 为图片标记添加宽度和高度样式:
    例如:
    <Image source={{uri: 'https://facebook.github.io/react/img/logo_og.png'}} style={{width: 400, height: 400}} />
    Image doc

  • 使用HTTP网址:您需要启用应用传输安全性
    App transport security for iOS

  • 使用HTTPS网址:它可以正常使用

答案 3 :(得分:5)

对于到此处的任何人,如果接受的答案对您不起作用,请确保您的图像具有正确的样式。对于uri导入的图像,您需要设置高度和宽度。

答案 4 :(得分:3)

有关此问题的注释。从React Native 0.63.0升级到0.63.2可解决以下问题:远程图像无法在设备上的iOS 14上显示。我在寻找答案的时候发现了这个线程,因此认为它可能对同一条船上的其他人有帮助。只需升级。 :)

答案 5 :(得分:3)

更新IOS 14.x之后,正在生成一个问题,即未显示图像。 这是一些有关此的信息。

添加[super displayLayer:layer]后可以显示图像;如果_currentFrame为nil

如果我理解正确,_currentFrame应该用于动画图像,因此,如果它是静止图像,我们可以使用UIImage实现来处理图像渲染,不确定是否正确。

node_modules / react-native / Libraries / Image / RCTUIImageViewAnimated.m

 if (_currentFrame) {
    layer.contentsScale = self.animatedImageScale;
    layer.contents = (__bridge id)_currentFrame.CGImage;
  } else {
    [super displayLayer:layer];
  }

答案 6 :(得分:0)

我的问题正在解决。 react-native-fs返回类似于/storage/emulated/0/Android/data/com.blah/blah.jpeg的路径,但是Image组件要求它为file:///storage/emulated/0/Android/data/com.blah/blah.jpeg

答案 7 :(得分:0)

我遇到了完全相同的问题,我的解决方法是将您拥有的var styles = ...设置为const styles = ...,就是这样,就解决了我的问题。

答案 8 :(得分:0)

如果使用的是RN 6.x>,则可以尝试通过https加载文件。

答案 9 :(得分:0)

我已经卸载了以前安装的应用程序,它开始工作。

答案 10 :(得分:0)

我来自网络的问题是我认为是uri的{​​{1}}参数

错误:url

正确:<Image style={styles.image} source={ { url: product.image } }/>

另外,您必须为图像元素设置<Image style={styles.image} source={ { uri: product.image } }/>width

我花了一段时间才弄清楚

答案 11 :(得分:0)

在iOS模拟器中为我设置样式backgroundColor会使事情搞砸。它没有显示图像,而是显示了颜色。

答案 12 :(得分:0)

我也刚刚经历过这种情况,无法显示网址来源的<Image>。发生此问题是因为我没有连接互联网就激活了Android模拟器(Android Studio AVD)。因此,解决方案也非常简单,连接到互联网,然后激活Android仿真器并运行本机应用程序,然后瞧……url的图像已完美显示。

<Image 
   source = {{ uri: 'https://your_image_from_url.png' }}
   style = {{ height: 50, width: 50 }}
/>

答案 13 :(得分:0)

嗯,基本上我在我的 Android 手机上遇到了同样的问题,基本上图像根本没有显示。我尝试了所有解决方案,并在想为什么它不显示图像。即使在另一个屏幕上显示图像的相同代码也能正常工作,所以我关闭了该应用程序并在 android 手机上重新安装了该应用程序。那也没有用。有时 Android 缓存系统是罪魁祸首。所以,我所做的是,

  1. 第一个解决方案
<块引用>

我转到 Android 设置中的应用程序 & 强制停止应用程序。而我又 重新启动了应用程序。 它开始显示一些图像,但不是全部。所以,我跳到了第二个解决方案。

  1. 第二种解决方案
<块引用>

如果您尝试了所有步骤,但仍然反应 native 的 Image 包不起作用,则安装 react-native-fast-image 库。如需了解详情,请React Native Fast Image Library...

答案 14 :(得分:0)

对我来说,我没有注意图像风格。我使用的是 maxHeight 和 maxWidth 而不是简单的高度和宽度。希望对某人有帮助