目次
1. 概要" >1. 概要
使用混合App的图片资源" >使用混合App的图片资源
@2x や @3x などのファイル名サフィックスを使用して、さまざまな画面解像度の画像を提供することもできます。たとえば、次のコード構造: " >@2x や @3x などのファイル名サフィックスを使用して、さまざまな画面解像度の画像を提供することもできます。たとえば、次のコード構造:
すべての場合にサイズを指定しないのはなぜですか" >すべての場合にサイズを指定しないのはなぜですか
ネストによる背景画像の実現 " >ネストによる背景画像の実現
2. 属性 " >2. 属性
3. スタイル style " > 3. スタイル style
四。 例" >四。 例

React-native の画像制御の概要

Jun 29, 2017 am 11:24 AM
image react-native コントロール

1. 概要

ネットワーク画像、静的リソース、一時的なローカル画像、ローカルディスク上の画像 (フォトアルバムなど) など、さまざまな種類の画像を表示するために使用される React コンポーネント。
バージョン 0.14 以降、React Native は、iOS および Android アプリケーションで画像を管理するための統合された方法を提供します。アプリに静的画像を追加するには、画像ファイルを img などのコード フォルダーのどこかに配置し、次のように参照します:
<Image source={require(&#39;./img/check.png&#39;)} />
如果你有my-icon.ios.png和my-icon.android.png,Packager就会根据平台而选择不同的文件。
你还可以使用@2x,@3x这样的文件名后缀,来为不同的屏幕精度提供图片。比如下面这样的代码结构:
------ button.js
------ img
------   |-------- check@2x.png
------    |-------- check@3x.p
Packager会打包所有的图片并且依据屏幕精度提供对应的资源。譬如说,iPhone 5s会使用check@2x.png,而Nexus 5上则会使用check@3x.png。如果没有图片恰好满足屏幕分辨率,则会自动选中最接近的一个图片。
【注意】如果你添加图片的时候packager正在运行,可能需要重启packager以便能正确引入新添加的图片。为了使新的图片资源机制正常工作,require中的图片名字必须是一个静态字符串,不能在require中进行拼接。
//正确
<Image source={require(&#39;./my-icon.png&#39;)} />
错误
var icon = this.props.active ? 'my-icon-active' : 'my-icon-inactive';
<Image source={require(&#39;./&#39; + icon + &#39;.png&#39;)} />

使用混合App的图片资源

如果你在编写一个混合App(一部分UI使用React Native,而另一部分使用平台原生代码),也可以使用已经打包到App中的图片资源(通过Xcode的asset类目或者Android的drawable文件夹打包):
<Image source={{uri: &#39;app_icon&#39;}} style={{width: 40, height: 40}} />
my-icon.ios.png と my-icon.android.png がある場合、パッケージャーはプラットフォームに応じて異なるファイルを選択します。

@2x や @3x などのファイル名サフィックスを使用して、さまざまな画面解像度の画像を提供することもできます。たとえば、次のコード構造:

------ button.js
------ img
------ |-------- check@ 2x .png------ |-------- check@3x.p
Packager はすべての画像をパッケージ化し、画面の精度に応じて対応するリソースを提供します。たとえば、iPhone 5s は check@2x.png を使用しますが、Nexus 5 は check@3x.png を使用します。画面解像度に正確に一致する画像がない場合は、最も近い画像が自動的に選択されます。
【注意】イメージを追加するときにパッケージャーが実行されている場合、新しく追加されたイメージを正しく導入するためにパッケージャーを再起動する必要がある場合があります。新しいイメージ リソース メカニズムが適切に動作するには、require のイメージ名は静的文字列である必要があり、require で結合することはできません。 <Image source={{uri: &#39;https://facebook.github.io/react/img/logo_og.png&#39;}} />

//正しい🎜🎜🎜🎜<画像ソース={require('./my-icon.png')} />🎜🎜🎜🎜エラー🎜🎜🎜🎜var icon = this.props.active? 'my-icon-active' : 'my-icon-inactive';🎜🎜🎜🎜🎜<画像ソース={require('./' + icon + '.png')} />🎜🎜🎜🎜🎜ハイブリッド アプリからの画像リソースの使用 🎜🎜🎜🎜 ハイブリッド アプリ (UI の一部で React Native を使用し、他の部分でプラットフォーム ネイティブ コードを使用) を作成している場合は、アプリにパッケージ化された画像リソースを使用することもできます。 (Xcode のアセット クラスまたは Android ドローアブル フォルダー パッケージ化を通じて): 🎜🎜🎜🎜<画像ソース={{uri: 'app_icon'}} スタイル={{幅: 40, 高さ: 40}} />🎜🎜🎜🎜注: これは安全性チェックなしで行われます。画像が実際にアプリケーションに存在することを自分で確認し、サイズを指定する必要があります。 🎜🎜🎜🎜ネットワーク画像の読み込み🎜🎜🎜🎜静的リソースとは異なり、画像のサイズを手動で指定する必要があります。 🎜🎜🎜//修正🎜🎜🎜🎜<画像ソース={{uri: 'https://facebook.github.io/react/img/logo_og.png'}} style={{幅: 400, 高さ: 400}} />🎜🎜🎜🎜//エラー🎜🎜🎜🎜<画像ソース={{uri: 'https://facebook.github.io/react/img /logo_og.png'}} />🎜🎜🎜
すべての場合にサイズを指定しないのはなぜですか

ブラウザーで画像のサイズを指定しない場合、ブラウザーは最初に 0x0 サイズの要素プレースホルダーをレンダリングし、ダウンロード後に画像をダウンロードします。完了したら、正しいサイズに基づいて画像をレンダリングします。これの最大の問題は、画像の読み込みプロセス中に UI が上下に飛び跳ねてしまい、ユーザー エクスペリエンスが非常に悪くなるということです。 React の
この動作はネイティブでは意図的に回避されています。これにより、開発者はリモート画像のサイズ (またはアスペクト比) を事前に知るためにさらに多くの作業を行う必要がありますが、これによりユーザー エクスペリエンスが向上すると考えられます。ただし、パッケージ化されたアプリケーション リソース ファイルからイメージを読み取る場合 (require('image!x') 構文を使用)、イメージのサイズはロード時にすぐに分かるため、サイズを指定する必要はありません。
たとえば、このような参照 require('image!logo') の実際の出力結果は次のようになります:
{"__packager_asset":true,"isStatic":true,"path":"/Users/react/HelloWorld/iOS/Images.xcassets/react.imageset/logo.png","uri":"logo","width":591,"height":573}

ネストによる背景画像の実現

は、次の背景画像に似ています。 Web )、 コンポーネントを作成し、背景画像を必要とするサブコンポーネントをそれに埋め込みます
return ( <画像ソース={...}> <テキスト>内側</テキスト> </画像> ; facebook.fresco:animated-base-support:0.11.0'

// GIF アニメーションをサポートする必要がある場合
'com.facebook.fresco:animated-gif:0.11.0' をコンパイルします


// WebP アニメーションを含む WebP 形式をサポートする必要がある場合
'com.facebook.fresco:animated-webp:0.11.0' をコンパイルします

'com.facebook.fresco:webpsupport:0.11.0' をコンパイルします


// アニメーション画像を使用せずに WebP 形式のみをサポートする必要がある場合

'com.facebook.fresco:webpsupport:0.11.0' をコンパイルします

}
同時に GIF も使用する場合ProGuard の場合は、proguard-rules.pro に次のルールを追加する必要があります:

-keep class com.facebook.imagepipeline.animated.factory.AnimatedFactoryImpl { public AnimatedFactoryImpl(com.facebook.imagepipeline.bitmaps.PlatformBitmapFactory, com) .facebook .imagepipeline.core.ExecutorSupplier); }

2. 属性

1.onLayout (関数) 画像のレイアウトが変更されると、このメソッドが呼び出されます。呼び出しコードは次のとおりです:
: {layout: {x, y, width, height } }}.
2.onLoad (関数): 画像のロードが成功すると、このメソッドがコールバックされます
3.onLoadEnd (関数): 画像のロードに失敗した場合は、関係なく、このメソッドがコールバックされます画像が正常にロードされたかどうか
4.onLoadStart (fkuntion): このメソッドは、画像のロードが開始されるときに呼び出されます
5.resizeMode スケーリング、オプションのパラメーター ('cover'、'contain'、'stretch ') 画像のサイズがレイアウトを超える場合 サイズ変更の際、画像は設定されたモードに従って拡大縮小またはトリミングされます
カバー: 幅と高さが超えるまで画像のアスペクト比を維持しながら画像を拡大縮小しますまたはコンテナ ビューのサイズと同じになります (コンテナにパディングがある場合は、それに応じて減算します)。注釈: このようにして、画像はコンテナを完全に覆うか、コンテナを超えて、コンテナ内に空白スペースを残しません。
contain: 幅と高さがコンテナ ビューのサイズ以下になるまで、画像のアスペクト比を維持しながら画像を拡大縮小します (コンテナにパディングがある場合は、それに応じて減算します)。注釈: このように、画像はコンテナー内に完全に包まれ、コンテナー内に空白スペースが生じる可能性があります。
stretch: 幅と高さがコンテナーを満たすまで、アスペクト比を維持せずに画像を引き伸ばします。
繰り返し: コンテナがいっぱいになるまでタイルを繰り返します。画像は元のサイズを維持します。 iOS のみで利用可能です。
center: 伸ばさずに中央に配置します。
6.source {uri:string} は、マークされた画像を参照します。このパラメータは、ネットワーク URL アドレスまたはローカル (参照には require (相対パス) を使用) パスにすることができます

3. スタイル style

1.FlexBoxはフレキシブルボックススタイルをサポートします
2.Transformsは属性アニメーションをサポートします3.resizeModeはスケーリングモードを設定します
4.backgroundColor背景色
5.borderColor境界線の色 6.borderWidth境界線の幅
7 . borderRadius 角丸の境界線
8.overflow コンテナを超える画像サイズを設定、表示または非表示を設定可能('visible'、'hidden')
9.tintColor カラー設定 10.opacity 不透明度を0.0に設定(透明)-1.0 (完全に不透明)

四。 例

ネットワーク回路図の追加例
class MyImageDemo extends Component {    与える() {        戻る (            <スタイル={[styles.flex,{marginTop:45}]}を表示>                <MyImage imgs={imgs}> </MyImage>            </表示>        );    } }
class MyImage extends Component {    コンストラクター(小道具) {        スーパー(小道具);        this.state = {            count: 0,//画像インデックス            画像: this.props.imgs,        };    }
render() {        戻る (            <スタイル={[styles.flex,{alignItems:'center'}]}を表示>                <スタイル={styles.image}を表示>                    <画像スタイル={styles.img}                           sizeMode='contain'                           ソース={{uri:this.state.imgs[this.state.count]}}/>                </表示>                <スタイル={styles.btns}を表示>                    <TouchableOpacity onPress={this.onPrevious.bind(this)}><View                        style={styles.btn}><Text>上一张</Text></View></TouchableOpacity>
<TouchableOpacity onPress={this.onNext.bind(this) }><View style={styles.btn}><Text>下一张</Text></View></TouchableOpacity>                </表示> </表示>        );    }
onPrevious() {        var count = this.state.count;        カウント - ;        if (カウント >= 0) {            this.setState({                カウント: カウント、            });        }    }    onNext() {        var count = this.state.count;        カウント++;        if (count
const スタイル = StyleSheet.create({        フレックス: {            フレックス: 1、        }、        画像: {            幅: 300、            高さ: 200、            境界幅: 1、            justifyContent: 'センター',            alignItems: '中心',            境界線の色: '#ccc',            境界半径: 5、        }、        画像: {            幅: 200、            身長: 150、        }、        ボタン: {            幅: 60、            身長: 35、            境界幅: 1、            境界線の色: '#ccc',            境界半径: 3、            justifyContent: 'センター',            alignItems: '中心',            右マージン: 30、        }、        ボタン: {            flexDirection: '行',            マージントップ: 20、            justifyContent: 'センター'        }    } );

效果


Image_first.jpeg


点击下一张


Image_second.jpeg


点击下一张


Image_third.jpeg

记录我自己的RN学习之路,纯属自己增值,有何不对的地,一起讨论进步

以上がReact-native の画像制御の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React Nativeのバージョンを変更する方法 React Nativeのバージョンを変更する方法 Jan 19, 2023 pm 02:31 PM

React Native のバージョンを変更する方法: 1. React Native プロジェクト ディレクトリに入り、コマンド ラインに「react-native --version」と入力します。 2. npm パッケージで管理されている React Native バージョンを表示します。 3. 「パッケージ」を開きます。プロジェクト内の .json" ファイルを編集し、依存関係フィールドを変更し、「react-native」バージョンをターゲット バージョンに変更します。

Bing Image Creatorを無料で使用する方法 Bing Image Creatorを無料で使用する方法 Feb 27, 2024 am 11:04 AM

この記事では、無料の BingImageCreator を使用して高品質の出力を取得する 7 つの方法を紹介します。 BingImageCreator (現在は ImageCreator for Microsoft Designer として知られています) は、優れたオンライン人工知能アート ジェネレーターの 1 つです。ユーザーのプロンプトに基づいて、非常にリアルな視覚効果を生成します。プロンプトがより具体的、明確、創造的であればあるほど、より良い結果が得られます。 BingImageCreator は、高品質の画像の作成において大きな進歩を遂げました。 Dall-E3 トレーニング モードを使用するようになり、より高いレベルの詳細とリアリズムが表示されます。ただし、一貫して HD 結果を生成できるかどうかは、高速な処理などのいくつかの要因によって決まります。

Xiaomi 携帯電話から画像を削除する方法 Xiaomi 携帯電話から画像を削除する方法 Mar 02, 2024 pm 05:34 PM

Xiaomi 携帯電話で画像を削除する方法? Xiaomi 携帯電話で画像を削除できますが、ほとんどのユーザーは画像の削除方法を知りません. 次に、編集者が提供する Xiaomi 携帯電話での画像の削除方法に関するチュートリアルです。ぜひご参加ください。 Xiaomi 携帯電話で画像を削除する方法 1. まず Xiaomi 携帯電話の [アルバム] 機能を開きます; 2. 次に、不要な写真を確認して右下の [削除] ボタンをクリックします; 3. 次に、[アルバム] をクリックします。上部にある特別な領域に入り、[ごみ箱]を選択します; 4. 次に、下図に示すように[ごみ箱を空にする]を直接クリックします; 5. 最後に[完全に削除]を直接クリックして完了します。

Imagemagic のインストール Centos と Image のインストール チュートリアル Imagemagic のインストール Centos と Image のインストール チュートリアル Feb 12, 2024 pm 05:27 PM

LINUX はオープン ソース オペレーティング システムです。その柔軟性とカスタマイズ性により、多くの開発者やシステム管理者が最初に選択します。LINUX システムでは、画像処理は非常に重要なタスクであり、Imagemagick と Image は 2 つの非常に人気のある画像処理ツールです。この記事では、Centos システムに Imagemagick と Image をインストールする方法を紹介し、詳細なインストール チュートリアルを提供します。 Imagemagic のインストール Centos チュートリアル Imagemagick は、コマンド ラインでさまざまな画像操作を実行できる強力な画像処理ツールセットです。Centos システムに Imagemagick をインストールする手順は次のとおりです: 1

Go 言語 Web 開発フレームワークの一般的なリッチ テキスト エディター コントロール Go 言語 Web 開発フレームワークの一般的なリッチ テキスト エディター コントロール Jun 04, 2023 am 09:10 AM

Web アプリケーションの人気に伴い、リッチ テキスト エディターは Web 開発に不可欠なツールになりました。 Web 開発に Go 言語を使用する場合、Web サイトやアプリケーションを充実させるために、適切なリッチ テキスト エディター コントロールを選択する必要もあります。この記事では、Go 言語の Web 開発における一般的なリッチ テキスト エディター コントロールについて説明します。 FroalaEditorFroalaEditor は、Web 開発で広く使用されている人気のリッチ テキスト エディター コントロールです。現代性がある

React Native レッド スクリーン エラーが発生した場合の対処方法 React Native レッド スクリーン エラーが発生した場合の対処方法 Jan 03, 2023 pm 02:37 PM

ネイティブ レッド スクリーン エラーへの解決策: 1. 「android/app/src/main/」にフォルダー アセットを作成します; 2. コマンド「react-nativebundle --platform android --dev false --entry-fileindex」を実行します.android.js..."; 3. プロジェクト内の「react-native run-android」を実行します。

Excelコントロールの作り方 Excelコントロールの作り方 Mar 20, 2024 am 09:40 AM

Excel オフィス ソフトウェアを使用する場合、いくつかのコントロールを上手に使用できれば、Excel フォームでよりプロフェッショナルな効果を生み出すことができます。たとえば、選択コントロールを追加すると、フォーム入力者がフォームを簡単に入力できるようになります。以下では、Excel の選択コントロールの作成方法を説明します。 1. まず、空の Excel テーブルを作成して開きます。 2. 「開発ツール」タブを追加し、左上のファイルボタンをクリックして、「Excel オプション」を見つけます。その後、カスタムリボンのオプションで開発ツールを見つけて、チェックマークが付くようにチェックします。その前に現れます。 3. Excel の作業インターフェイスに戻ると、[開発ツール] タブが表示されます。

React Native アップデートが失敗した場合の対処方法 React Native アップデートが失敗した場合の対処方法 Jan 09, 2023 am 10:41 AM

ネイティブ更新の失敗に対応する解決策: 1. レビューのために IPA パッケージを App Store に直接送信し、その後 IPA パッケージをプッシュ プラットフォームにアップロードします。 2. アーカイブされた IPA パッケージをプッシュ プラットフォームにアップロードして、IPA パッケージを送信します。 iTunes に接続する; 3. . Xcode を介してリリース モード パッケージを携帯電話にコンパイルし、次に iTunes を使用して IPA パッケージをエクスポートし、IPA を押しの強いプラットフォームにアップロードします。

See all articles