React-Native で始めたばかりで、静止画像を要求するのに苦労しています。
ここに私がこれまで持っている非常に基本的なコードがあります:
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
Image,
View,
} = React;
var buzz = React.createClass({
render: function() {
return (
<View style={styles.container}>
<Image source={require('image!bg')} style={styles.bg}>
<Text style={styles.welcome}>
Welcome to Buzz! iOS interface to
</Text>
<Text style={styles.welcomeHeader}>Charityware</Text>
</Image>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'transparent'
},
welcomeHeader: {
fontWeight: '600',
fontFamily: 'Helvetica',
color: '#fff',
fontSize: 50,
alignSelf: 'center'
},
bg: {
width: 400,
height: 300,
alignSelf: 'auto',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
},
});
AppRegistry.registerComponent('buzz', () => buzz);
主な問題領域は次のとおりです。
<Image source={require('image!bg')} style={styles.bg}>
<Text style={styles.welcome}>
Welcome to Buzz! iOS interface to
</Text>
<Text style={styles.welcomeHeader}>Charityware</Text>
</Image>
アプリをパッケージ化して実行すると、レンダリングエラーが発生します。
require
呼び出しで画像を見つけ、そのために画像セットを追加するには、画像セットとしてxcodeに画像を追加する必要があることを理解しています。
...しかし役に立たない。誰もが考えている?私はドキュメントを読んでおり、seem規定の方法でこれを行っています。ありがとう!
React Native release 0.14
画像の処理はiOS向けに正規化され、Androidとなり、現在は異なります。Githubにあるこの非常に明確なコミットノート以外のドキュメントは見つかりませんでした: 新しい資産システムを文書化します 。
更新:実際のドキュメントへのリンクがあります: https://facebook.github.io/react-native/docs/images.html
同様の問題が発生したため、ファイルシステム内のイメージファイルの名前をxcodeプロジェクトの_Images.xcassets
_ディレクトリの下に変更しました。
たとえば、source={require('image!Villagers')}
の場合、_Villagers.png
_、_[email protected]
_、_[email protected]
_という名前の画像ファイルが必要です。ファイル名の「@ 3x」の部分がない場合、画像は見つかりません。
React Nativeのどのバージョンを実行していますか?それに関連するパッケージャーに問題があり、解決されています。
その場合は、次を使用してdevサーバーを更新または実行できます。
node_modules/react-native/packager/packager.sh --assetRoots path/to/Images.xcassets
注:新しいリソースに必要なアプリビルド新しいリソースをImages.xcassetsに追加するときは、使用する前にXCodeでアプリを再ビルドする必要があります-シミュレーター内からのリロードでは不十分です。 (from React Native docs https://facebook.github.io/react-native/docs/image.html#content )
また、パッケージャを再起動してください。これで問題は解決しました。
アセットフォルダーにpackage.jsonファイルを作成すると、画像を簡単に参照できます。
そして、このコードで呼び出すことができます。
<Image
source={require('assets/img/avatar.png')}
style={styles.itemAvatar}
resizeMode={'cover'}
/>
静止画像の場合、次のようなパスを指定する必要があります。
<Image source={require('./images/back.png')}
style= {{width:25, height:25, marginLeft:12, padding:12}}/>
プロジェクトディレクトリのimagesフォルダに保存されている画像の場合、これは私にとってはうまくいきました: