From 2a742a958c9d26ac36ea77fa33d020558040c8cd Mon Sep 17 00:00:00 2001 From: Gustavo Gard Date: Wed, 4 Oct 2017 19:25:02 -0300 Subject: [PATCH 1/6] Correct logo URL --- Libraries/Image/Image.android.js | 2 +- Libraries/Image/Image.ios.js | 2 +- Libraries/Image/ImageBackground.js | 2 +- RNTester/RNTesterUnitTests/RCTImageLoaderTests.m | 4 ++-- RNTester/js/ImageExample.js | 6 +++--- docs/Images.md | 8 ++++---- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Libraries/Image/Image.android.js b/Libraries/Image/Image.android.js index b953d085515074..cb9dbb582c5271 100644 --- a/Libraries/Image/Image.android.js +++ b/Libraries/Image/Image.android.js @@ -55,7 +55,7 @@ function generateRequestId() { * /> * * * ); diff --git a/Libraries/Image/Image.ios.js b/Libraries/Image/Image.ios.js index 8b733822260b37..4d1d37fd271a87 100644 --- a/Libraries/Image/Image.ios.js +++ b/Libraries/Image/Image.ios.js @@ -53,7 +53,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * /> * * * React * diff --git a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m index 59e8b30080c899..f105ea1c46b6b6 100644 --- a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m +++ b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m @@ -54,7 +54,7 @@ - (void)testImageLoading NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://reactjs.org/logo-og.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); @@ -85,7 +85,7 @@ - (void)testImageLoaderUsesImageURLLoaderWithHighestPriority NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader1, loader2]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://reactjs.org/logo-og.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); diff --git a/RNTester/js/ImageExample.js b/RNTester/js/ImageExample.js index 8d858777611f31..76503fbf7ded0b 100644 --- a/RNTester/js/ImageExample.js +++ b/RNTester/js/ImageExample.js @@ -197,7 +197,7 @@ var MultipleSourcesExample = createReactClass({ source={[ {uri: 'https://facebook.github.io/react/img/logo_small.png', width: 38, height: 38}, {uri: 'https://facebook.github.io/react/img/logo_small_2x.png', width: 76, height: 76}, - {uri: 'https://facebook.github.io/react/logo-og.png', width: 400, height: 400} + {uri: 'https://reactjs.org/logo-og.png', width: 400, height: 400} ]} /> @@ -237,7 +237,7 @@ exports.examples = [ render: function() { return ( ); @@ -727,7 +727,7 @@ exports.examples = [ }, ]; -var fullImage = {uri: 'https://facebook.github.io/react/logo-og.png'}; +var fullImage = {uri: 'https://reactjs.org/logo-og.png'}; var smallImage = {uri: 'https://facebook.github.io/react/img/logo_small_2x.png'}; var styles = StyleSheet.create({ diff --git a/docs/Images.md b/docs/Images.md index 4e05595ebe3452..a964308feafe77 100644 --- a/docs/Images.md +++ b/docs/Images.md @@ -97,11 +97,11 @@ Many of the images you will display in your app will not be available at compile ```javascript // GOOD - // BAD - + ``` ### Network Requests for Images @@ -110,7 +110,7 @@ Many of the images you will display in your app will not be available at compile ```javascript ``` From 4ff37c340e31f27a1e82f782c2977e35cbad5ac2 Mon Sep 17 00:00:00 2001 From: Gustavo Gard Date: Thu, 5 Oct 2017 16:32:47 -0300 Subject: [PATCH 2/6] Update URLs and add static images --- IntegrationTests/ImageCachePolicyTest.js | 8 ++++---- Libraries/Image/Image.android.js | 2 +- Libraries/Image/Image.ios.js | 2 +- Libraries/Image/ImageBackground.js | 2 +- .../RNTesterUnitTests/RCTImageLoaderTests.m | 4 ++-- RNTester/js/ImageExample.js | 12 ++++++------ docs/Images.md | 8 ++++---- website/src/react-native/img/logo-og.png | Bin 0 -> 10754 bytes website/src/react-native/img/logo-small-2x.png | Bin 0 -> 12770 bytes website/src/react-native/img/logo-small.png | Bin 0 -> 4379 bytes 10 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 website/src/react-native/img/logo-og.png create mode 100644 website/src/react-native/img/logo-small-2x.png create mode 100644 website/src/react-native/img/logo-small.png diff --git a/IntegrationTests/ImageCachePolicyTest.js b/IntegrationTests/ImageCachePolicyTest.js index 4d621dfc546c34..b9bcb9c0103e3e 100644 --- a/IntegrationTests/ImageCachePolicyTest.js +++ b/IntegrationTests/ImageCachePolicyTest.js @@ -65,7 +65,7 @@ class ImageCachePolicyTest extends React.Component { Hello this.testComplete('only-if-cached', false)} @@ -74,7 +74,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('default', true)} @@ -83,7 +83,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('reload', true)} @@ -92,7 +92,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('force-cache', true)} diff --git a/Libraries/Image/Image.android.js b/Libraries/Image/Image.android.js index cb9dbb582c5271..ae533a068d7ce5 100644 --- a/Libraries/Image/Image.android.js +++ b/Libraries/Image/Image.android.js @@ -55,7 +55,7 @@ function generateRequestId() { * /> * * * ); diff --git a/Libraries/Image/Image.ios.js b/Libraries/Image/Image.ios.js index 4d1d37fd271a87..bc2bd13f956685 100644 --- a/Libraries/Image/Image.ios.js +++ b/Libraries/Image/Image.ios.js @@ -53,7 +53,7 @@ const ImageViewManager = NativeModules.ImageViewManager; * /> * * * React * diff --git a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m index f105ea1c46b6b6..ddbcbddd75f04e 100644 --- a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m +++ b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m @@ -54,7 +54,7 @@ - (void)testImageLoading NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://reactjs.org/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/logo-og.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); @@ -85,7 +85,7 @@ - (void)testImageLoaderUsesImageURLLoaderWithHighestPriority NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader1, loader2]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://reactjs.org/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/logo-og.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); diff --git a/RNTester/js/ImageExample.js b/RNTester/js/ImageExample.js index 76503fbf7ded0b..57ed5b64958cbb 100644 --- a/RNTester/js/ImageExample.js +++ b/RNTester/js/ImageExample.js @@ -195,9 +195,9 @@ var MultipleSourcesExample = createReactClass({ @@ -237,7 +237,7 @@ exports.examples = [ render: function() { return ( ); @@ -727,8 +727,8 @@ exports.examples = [ }, ]; -var fullImage = {uri: 'https://reactjs.org/logo-og.png'}; -var smallImage = {uri: 'https://facebook.github.io/react/img/logo_small_2x.png'}; +var fullImage = {uri: 'https://facebook.github.io/react-native/img/logo-og.png'}; +var smallImage = {uri: 'https://facebook.github.io/react-native/img/logo-small-2x.png'}; var styles = StyleSheet.create({ base: { diff --git a/docs/Images.md b/docs/Images.md index a964308feafe77..03f49dd5e71a9f 100644 --- a/docs/Images.md +++ b/docs/Images.md @@ -97,11 +97,11 @@ Many of the images you will display in your app will not be available at compile ```javascript // GOOD - // BAD - + ``` ### Network Requests for Images @@ -110,7 +110,7 @@ Many of the images you will display in your app will not be available at compile ```javascript ``` diff --git a/website/src/react-native/img/logo-og.png b/website/src/react-native/img/logo-og.png new file mode 100644 index 0000000000000000000000000000000000000000..6a30e151a7b593be5e33661e6813ffd0604a2bdc GIT binary patch literal 10754 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 literal 0 HcmV?d00001 diff --git a/website/src/react-native/img/logo-small.png b/website/src/react-native/img/logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ff6be9a7847d9d2a3cd1367855abcfb71cc0db GIT binary patch literal 4379 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 Date: Thu, 2 Nov 2017 21:12:06 -0300 Subject: [PATCH 3/6] update urls --- IntegrationTests/ImageCachePolicyTest.js | 8 ++++---- RNTester/js/ImageExample.js | 6 +++--- website/src/react-native/img/logo-small-2x.png | Bin 12770 -> 0 bytes website/src/react-native/img/logo-small.png | Bin 4379 -> 0 bytes 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 website/src/react-native/img/logo-small-2x.png delete mode 100644 website/src/react-native/img/logo-small.png diff --git a/IntegrationTests/ImageCachePolicyTest.js b/IntegrationTests/ImageCachePolicyTest.js index c59d192abbbd77..29b5e68d1d2117 100644 --- a/IntegrationTests/ImageCachePolicyTest.js +++ b/IntegrationTests/ImageCachePolicyTest.js @@ -65,7 +65,7 @@ class ImageCachePolicyTest extends React.Component { Hello this.testComplete('only-if-cached', false)} @@ -74,7 +74,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('default', true)} @@ -83,7 +83,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('reload', true)} @@ -92,7 +92,7 @@ class ImageCachePolicyTest extends React.Component { /> this.testComplete('force-cache', true)} diff --git a/RNTester/js/ImageExample.js b/RNTester/js/ImageExample.js index 57ed5b64958cbb..21c6af0a4df579 100644 --- a/RNTester/js/ImageExample.js +++ b/RNTester/js/ImageExample.js @@ -195,8 +195,8 @@ var MultipleSourcesExample = createReactClass({ @@ -728,7 +728,7 @@ exports.examples = [ ]; var fullImage = {uri: 'https://facebook.github.io/react-native/img/logo-og.png'}; -var smallImage = {uri: 'https://facebook.github.io/react-native/img/logo-small-2x.png'}; +var smallImage = {uri: 'https://facebook.github.io/react-native/img/favicon.png'}; var styles = StyleSheet.create({ base: { diff --git a/website/src/react-native/img/logo-small-2x.png b/website/src/react-native/img/logo-small-2x.png deleted file mode 100644 index d72bc1ffe2132e0a02f397daa89be7d43160b70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12770 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 diff --git a/website/src/react-native/img/logo-small.png b/website/src/react-native/img/logo-small.png deleted file mode 100644 index b5ff6be9a7847d9d2a3cd1367855abcfb71cc0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4379 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 Date: Thu, 2 Nov 2017 21:18:04 -0300 Subject: [PATCH 4/6] update logo url --- Libraries/Image/Image.android.js | 2 +- Libraries/Image/ImageBackground.js | 2 +- .../RNTesterUnitTests/RCTImageLoaderTests.m | 4 ++-- RNTester/js/ImageExample.js | 4 ++-- docs/Images.md | 8 ++++---- website/src/react-native/img/logo-og.png | Bin 10754 -> 0 bytes 6 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 website/src/react-native/img/logo-og.png diff --git a/Libraries/Image/Image.android.js b/Libraries/Image/Image.android.js index ae533a068d7ce5..c461c1a205e2a8 100644 --- a/Libraries/Image/Image.android.js +++ b/Libraries/Image/Image.android.js @@ -55,7 +55,7 @@ function generateRequestId() { * /> * * * ); diff --git a/Libraries/Image/ImageBackground.js b/Libraries/Image/ImageBackground.js index db2d157671b139..13f4e2e9f85e1a 100644 --- a/Libraries/Image/ImageBackground.js +++ b/Libraries/Image/ImageBackground.js @@ -33,7 +33,7 @@ import type {NativeMethodsMixinType} from 'ReactNativeTypes'; * return ( * * React * diff --git a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m index ddbcbddd75f04e..2f20a0504b84b0 100644 --- a/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m +++ b/RNTester/RNTesterUnitTests/RCTImageLoaderTests.m @@ -54,7 +54,7 @@ - (void)testImageLoading NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/opengraph.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); @@ -85,7 +85,7 @@ - (void)testImageLoaderUsesImageURLLoaderWithHighestPriority NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader1, loader2]; } launchOptions:nil]; - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/logo-og.png"]]; + NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/opengraph.png"]]; [bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) { XCTAssertEqual(progress, 1); XCTAssertEqual(total, 1); diff --git a/RNTester/js/ImageExample.js b/RNTester/js/ImageExample.js index 21c6af0a4df579..bda7ddaa361e92 100644 --- a/RNTester/js/ImageExample.js +++ b/RNTester/js/ImageExample.js @@ -197,7 +197,7 @@ var MultipleSourcesExample = createReactClass({ source={[ {uri: 'https://facebook.github.io/react-native/img/favicon.png', width: 38, height: 38}, {uri: 'https://facebook.github.io/react-native/img/favicon.png', width: 76, height: 76}, - {uri: 'https://facebook.github.io/react-native/img/logo-og.png', width: 400, height: 400} + {uri: 'https://facebook.github.io/react-native/img/opengraph.png', width: 400, height: 400} ]} /> @@ -727,7 +727,7 @@ exports.examples = [ }, ]; -var fullImage = {uri: 'https://facebook.github.io/react-native/img/logo-og.png'}; +var fullImage = {uri: 'https://facebook.github.io/react-native/img/opengraph.png'}; var smallImage = {uri: 'https://facebook.github.io/react-native/img/favicon.png'}; var styles = StyleSheet.create({ diff --git a/docs/Images.md b/docs/Images.md index 03f49dd5e71a9f..bde0a8af3a9ab7 100644 --- a/docs/Images.md +++ b/docs/Images.md @@ -97,11 +97,11 @@ Many of the images you will display in your app will not be available at compile ```javascript // GOOD - // BAD - + ``` ### Network Requests for Images @@ -110,7 +110,7 @@ Many of the images you will display in your app will not be available at compile ```javascript ``` diff --git a/website/src/react-native/img/logo-og.png b/website/src/react-native/img/logo-og.png deleted file mode 100644 index 6a30e151a7b593be5e33661e6813ffd0604a2bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10754 zcmd6t_aj^1AO96K-bDp9Vkh<;ep&DVx0T}_DffK#qGAUza_1l zEyuQbAX1XnF1iJ+_Dh%AZ)=3qb#x0`g*6QJd#3u_rZt-&b2NN`yBE2OTg z9Ga*Sp5n0bM<=^pC#PODB2C^a%x>XKE&8=$V623tll|vw%aLzVwg@RZ1iyl+LDc}i zyoy0(zwP`f2QR;A_oCgxxmoXLjl=?r4_kW09qOn&Igb|_Nrh(pt0wKUf@)eyL2>G+ zToE0kr|(DP+(URJWjVNcM6{nN`bR7HMn0<>)y;1fRE3E>wNQ`Gu^jy_psWt&;*$4z zDXMP@0&|EPS!=z0XNNrnfx)7BCguZQ6a!vaf85h6YU2_Tu^8SosOaSpm*f%@hNYEC z+Q5z5X00Z6#f@!@nkQAG&^DhA&3c!g)_&j?g&0;1m=CO3jsK9aaMVmM)6T5rCdiLJDgx0r#sn4vio znZ+w1qa2n5F}357kd}1~5QgcA>KU7K%v)f-3PH8?%en;=)wD9I6#Sx;f{~i&3f+Ph zi=hqetoLSpD;mi~DiNt1JbWe{b8;S`GA@3$b0<(_w)itEK52QQ<|)nBmEySDJ@=Av z^*3()1WPT2rIzr?D5$;45Z2TeP}WfJje6EFA&Urvr4)Zrk)g)J^DJ=`N<%s~HwdTLf>HQ*e1) z$nb-#R3vIcY$?SgyuGj8bM5wCldjHn!>7V9^R)l0aE2njLZ#g{&{%HqM-zjIwf8slRE?k?Ll~k zi8&+Y@4dCa-k!9yj@)s0Q895cHa+FhHdz^QU8Hz#woaM}i;BwsgbNH&vf&v*kEtg~ zdzZz|fd{v=Uzv#3 zA7V7I<=MdJZ_=6NK6s=*g%U0rO20*}%;!v1qu-UNz0+n(=0LrcrhM=w5e%3mC6Ts^ zxUpt>8Cux4v>MjX7POdqb3rU`vfQ@09J(=cqm$TzRD+ftX;<h4JWA}DUFxL; z%`a$wX)qWzy31|~FbO6Q3sPscNny@-Y%uXN&vK{-MI%*JVM2xY_kwBtgZC6ngRetp zcDhrE8?E2`MDSvS63xS?tJ5LxRO%tWu3N1_1oSG+J8>TWaO~AehD1TlPhD~kfay7< zN_yo<|AaLxvzT=0sPBzqr#wtx*l`XhM|Wy*1sMbXM&FxHtK?8%q#Mk&qK6Lb7+JPM zg3=6N*1*b)k2Zq$zh%mYjQ7L|b(5<}ek$2FMQJ+e@l};zoSb&sc>^Tdi0Ui#Dq46u z*yXS~2%aKBKtc@zWIfeG&t1*c#&vjPsy?872IBOSBKK0wIAPou^5Hl1lHy%iStGt9Wsk>KnCVMiahV1A@pnbwe~FZOp!wv=x~-W( zKiO_2*38?pz3P{2w=21oE|dtWg-j#E2SxgfIxric1N@gN%<*@u!HWwBQxcpC4Ms?l z^_%1~mt_#wG({f}?{NeLsl($KV4&Afj)8on5#?Yqm2A#Gw!6mN5LsTChYylVO5|Ce za)2;!O=B=hZVWpyD|0=aUlJg8qfhuWuh@aUR1?Zl>cI4}31+ zgNM-I9Mk4}0QlOUbY@kC0C+x7Qf7`HoPb$%h&+;q3Y`i06*qV(R2);&7p-JAr!urb z@@t_oJ&+FF4>?!$kxQwJnK#nst%#YEWA7Y8NYev2KqWLc2TX&Lpv`*JqHE_V||#0(JvDjUhpOOoEJNIL(@>0p?;3ilmb?Qbu(bt#k~mQGPx zdrr#2W@+&?P9QF@-T6l1VUhHAM-QXIa%xzI8(|r1Cc>qhG+7|RhBsm(E%j~X z6%8Q5ER9IgIFyGP#+}6LuXU9o)0J02R|epV`{h+W3Oci7YOi81cNO$2;BqhiXkGSP zy~YZ+J?;7ciP);0=ytz7YVX zc<4AtvNENskW1nVP0=)7+M)zD4M<#DEXeOMxemd=qJ>v{%v#PjX+mE-@+)O%=^g@D zsERiuGLrPdC;bX!lplpxh|5TnCXIr&8sl}x`#0_V&1*K!9PFg zZ#~quauAeXq@7=C6MVVy78!|Cy{`b29ZuWUX*IElf(TWY9#(MN?rCDeDADlMIHc;e zudvYG`FCv)=Rq**2(PY3MO#Hn*J4OHe*}{J5aMfqq{yU58?1M z*k&hqVK6J%EPV`n&J5+Kv7B$LYv}EBKKeO69wP|9A#QF@M6R=eo?g(9$AhdKv%ihB zY}zTfcYw!I74Bn7E(X4OA4H0t$DHA={W>gaHJ@LsW+6o>(bb{pm56cZ^iyK;hy#q5`^OxD9ry0=>xHi|sWm59n-9cu#webj zwnV~ptcpA3X&Vfi8I0;PC%<0?%=13(KxQ>pX86;ggW;c|HGjVmUh>VT4mqP#D+67dl)5As3gEOSe{m1<6;#XXcPx#1yC2C8kvyf6Aiy(*vI)E9P?0|!FhBBAam z&Dd~l487~M&S}1NjobQ4lFaHB1G@rq%g?DModkc{_xG|870f-TRsGJMv z*$db}==N9WCVUW;%?qh~sa$~A-#f-rHV~k7aW_6wWVhx(%5Wr~U*`O*4%c-4c*Tnp z$-7bNqcS;Zc^Gk96Cvy!zIZmNpLZ7;D8XcGHlX;g)p^FQ?PBtuDf2*B?WCm;j|adt zo2n;#2@jBfLd*o{h!_jH12hl!$xKSu#IbB3t6nYP%{TVr2gK~fDi>rH-_EmUVo@GL zd=1^9g5f&9!bV^GW^O%|SXG4C7hx}F-V)n{ZtUN1?X9iWE}N)A+jZ^a!^Qr+i~O4T zXmVp3Bdq^ZZBm9r1!nm-|8fnU*Zjyz;i*Anw_+bR)F~;$Zb|XeueyJyweH>_kM4zK zqBDO;kf`YSTiWV=yYIWZ@V__j%v{mwHOhPpSa}^Fd+Fp-`v=_z8KxRclN&(y@!M=zb%l;~-zx%rc+`Bjb1 zPzjC6Hj?SK)(`bjwWDoQ^S>(8adsK&Ct_jFKH|3mmb5>>kUw_w&6W6GAG7;Z;{?#t zrgI%}=il8rb6`60IV5va&n#1;^J@2DTOI%NH8{;vbpiE9#DfuVMW#>v)ulTcu?HHK zH7xNhThj<>zxWGZm(t@r4ycp3|Ae$l@om1k#Gog{=Aml~oWU;I&?LEPhgsSRhMiQN zF7^MI6YZO&43*^WGabt|oyZ`T_(s=u2*0LCz0=j{Wl#~vRP6x})Hp{bS zNDCeBnmm-uKE4wT|ir@oTM0FrHp%>Eab_4TNV2y zf#k6oYwln9RHoII#7e~yYs%>DA^F4me%7-pFgd@JceLFy&a~&#R^Fe526bza;+<(3uq2=^J-|2VW2Uelf zxrGZ|r*G?5E>C<2I9oQt=yKppdPeUV?$QOyOM2-Uw2sU)>DIWL&?wEj#Q;;EXDnhD z?0VkcgC~R$Inn17O!Ao&qZEpi`vt0#Sz5P8p1F$9%2R#5;+ER8rl&Zki~yRRGHS7o z)XIkAo<2B3RIA%vSEkU?T?-LHuh?1m_J}`siQT{82!(x`_R@n8^x8ummL#kp$!AdM z;3<0Ndfg8h=>eyFqYj%_o1soZYg|d|-B8^B`_%@?w@&b|?#)i!FaTXax2k0VF3O@9evw%%bab2Sc=?dqx!6wPf$k+M1QOw?!w(aOXEtLR@TW$)x7eB}kl zhK;Ixr^Y+=E!t_0672#i_jQ~azFCjmw=#_L0&*-yjLVLYtlYB>&-|t>bM+OeZGQwf zBfCFEXNe!iEG^*;215$)l#Wl56Dg0j(08|>Pj?A_`#rxPBq+&Ti8PgGoJ2|GWHdRJQ?t#09iOC%j=(r z10QZ5JiQJ~)hLVZ1-qXH)I~)77ySBCQm+VK0lxB(1^8di+hL-R&vBV7%J&PWrUR)7 zq9YOG09;nncqT-XeEkivX*SBQ#BQ+Fn?lMZ#eBKTqwq0Oo|9p59oI*0Wo zf!il%g3$z^Q$9}^xEgSNPA@M|DxCCn3l!Q-q{6JXR!dTZ%GaM%)FNEUW6^GZ)iWBi zKRJ}*6KwxLK>%hy5e}DOE}=#jIYR1qHGH^dF(=19oZ+$$SQIPcqe;Bxfw|9>z#bq! zB|T;q4U)v)rL{lWe6pCdiZr;k>I40|Yl>ni<-bH%-T=e^3>*2CtboL`y#x5~Qlrfc zWW0%@xZB;>0faTxCt*AfLasnv5+bERSH?A@#{YNeKbBAL%aY86W7*p#|LVo+KHzXn^Ey+L4(R2NQTcQXk!}M)m+o^(%BwghO&M%0C9N_LV$`v6Sn27y^@U|A%+V{1Pnp>;h`BwPhEjWY*SI8Y5QC}>P-A(Wotzo6czuc(t7 zh9n^CamIx_I*wR(d_7Lr;WaWMF@lXx0woCi;l)(O8dx^eiHBTWS$~r>@>Pcz(K8}% zrIF!qaO)1%M{Jk_)Pl%HijbFk()QX6Dc47JShRY^h)B$eFgj47-$4R2P<%60f=djA z5zpC_hOi&$J>%YzJaq+Df^(wOXnhU0Ttf)|epyG0gNNakEGubi@>+Y-Qf z4HS`xi3gYbTahTLkX#1G8ahB}Eh2;**EI}L&94gY#%eK!SPtSXVT>4M_fuzS7Uzz6 zaH0zQr2>vjWfShngzxR~?xV6Cd}X^NT;q;@C5t3zsv7`J<2SM$d&q42o$)sRUJw4) zBI7DSuE0;p2Utl#UN<&c6?rzjJw7%~?jPCsc$y%xeYv}ThWJdrMTK@ptP*dH=V{Wl ze05d`w@P0LtF9AzytSu-ZNnwcEoB*d1gUBh@%o3t`1swuHLYVG<7BUX6&|4kEalAu zc52+H2!2wdztc058p5Ioaf#Gmh*hDg6+ z=>`*W&!4h>hH{)!?0i@zISLP@f6XOxr1J|ugkJUWZ*V6gmCRmkd%}27>(pUfaZT-> zv-j_Bcy^{YMJrMc{kJVbIi|XQMP}#_^r<$uSL62UP7wPg;!Ij7;ek zJc+R99Qf4{vAiGC!Jy_`UfSisj)OwT`?^n7Dn@6PA)mpc?>}5d#jnyrE~aa38Esel zT$;unDepm@ESZhocj85?>tHViBjGP-ZGVXJpMBl2u%vykjD^rg*fhT4J*Z@Ng>E0w z8@*R}sCZGik6*kekXv&Zo0XOwcRxH?XaXrPA+%OD^1crEXjzF`Php}$S7q~E1}NT! z6jlm9_)6*WR#N*;DkR|bu z3$sSn;cLB&ZKZ2o@L?)QK8VYwM&~>X5WA9e+Lg`C+=`6QpM`V-HuyGctE&E9@om*T zhv+2~ohVJhyC1J~c?uQKOnuN`1JPy8&IR_R$L0QkoCn*9H2t^labf<%#zdk0$-IU7 zB=hyUIq=6a+oQhvva;7MpLw9$hg7nB>;3c$aub0Jx5a$9+HUDftyPw@b8o6D+3Rwt za%+gTg3Vk+8yBAShVwGN?M+F6LL=N%T&V}@ph(-|lGZwy*_p$*@(6G3PsBUBaP5a; zKJs@x z)zbRXA|bz;DJuds%m_KecZD%6r?RZp)qJP~g9==+*j$~p;UPiD#jCn&drL(%{qwS& zug^b+I*T=z99FpRAzr$AJOj;lh7*S#V82hlH0S#XH;*#zn42$sATvArDswH}jh(!V z&tW361;!eB&=?MulmO)X@vdyTw{r;iSg2qqrT?a8w(wClC$_-!YIt!Ij zk+1w*oHlVUoh$OZPKP?IrbE-sgo4~`(3x4W0r4-tG?Ru+GC2OT2zF`WzNl9rnJ%WX z{1jI!_oTiQ#t}KH>ar`)S-W18c|)0d1D6SL?UYMev5*F{f|^%)el+;HI6fcqv=c?fkysGNQRynEAJZGBG#Qausai z+cFd^pf4iFxp_65sRm6XzI0vs=6+;xaluA^X|1CJi!B8Ux(`Hc4KNCW8(VFN7|zs$y4{c`%vJUL z{q6r<4Q4{{=Me&78#CyZi)~h9g@-Mu8FcJN(uF6I@0%qFW}(f;hB3DnyR#(A| z!Em{@+M(iD>?lUz!~I6LB8BK*DupSIlVS8SBT7_bO621SH9*-bmFD}`sevcj_F7Bq17=(H39u?XY(yCI^n-f;h8T#UhR7uTF zRzc_Tlzh3H8s-Ki1lTvgNcvoS6`HX=|Mbhx%Xp_{vuiKMh9$Pv6TX)=PK6%*0||i1 zlE=?{KKXl@R3%bXDd2U#o+?h^tt?xB$lgS8sY0F06q3^4jZT1V`;VI}$X4Eu3H5q@ z*w%2WsjhkVCN*)~9>_u}iBjlH9bYmA-o;f@p{)?oj4QIo_N%h(1^w7&7qfK{$I)bQf+7`_L#D{T}We1*=bvR z_4&{Aws`nn3W^H7#S9OjTUje;SDZ|bc2+=yk*|bhAt^8bJ&;%i@-;`Z)JrDM@D5c= ztBVRxYnJ9Lff5I=e00=&pX{{A}oPWJ>n ze~sqVj}zXUI~KsXxXk(B-~K6V|4bhu%b~Fre7s8tTm|Psogn1PgGHlsaQlU9Ft` z8kEkE{8Sz)G_L$4jrN$N>2r5@cQ{S621+l0cQW8ul6zN)IT&AyWd-sw z2?v;%5uYEh?+wxThi#el{SZ@6<9H>9L^1;uK&Le1#B78qc4F!d1b7e{v5~A4lA#9> z`8b@H6XTsDAzxnMOp=h^SB3($&l9~~yjagJbz@LH`H$Qa z2b%n-$@u}P&Gbh3STyf*Vs<8eL?)y4F)lMG7bYi}axAYN<7)g0-}|5H`Y(nu!;Ujf$NAqWt-B=lWpI2dm61;wMMPdv zRT4v4ieH-`rw!$}8aT^&cy1^{?U3uvl8SSDWxY{eUtL;T*u!RQ^Q7^X`srXZO#Cwe z6HO!3sYUx=zA_#6wk!i3j*EfD2F}v<_pX^>8$WPEIPpjCAV5}H;VO8on)>M$oXo-M zO>xWzP^{o6d7bihLbZe|)o`F{a_Vz#HtP&{$OBwxMu=*a>eSRZbq}l98YGe(*G*R% zvItPR?S6i2NyYv*2Wj!Y*}=gD%EH@*z5Uvkv95GLFC2m!S3-P#RD$?54C#h|AYpUI z2LGF29SmP=MJNe2v>50hGhw?9Q~))brE(pFixx7_-#=761(4sc<1&Ph{0cX|++tvA zIWW`moCrQn%wsXSC*OiMN66MqGBYOL#o(so*-AWP;$bo+j>X1s7viGvCmH%A>Q!w( zh0DGqLg6t^==TFt2RAAmL~)DbvSdq!a8V>m-`0%~Xjhs+N=|Yh1H4qB zNf_tD@k8ZF{mKmPB)sB1E!q8UvIorCm{i>Iuz;!AP(=$Is&TXa3-UM}2$T&_aWpr!9Dr6IgXt(ETz7*6O!-2U2zuZp^(4f;);fk`) zb3PKn`ml$wM>^ZBGGt^s_pEoAH8DI9N0=~tc$9ekT5>zkD$VNg8 zS70Z9TIzjd@Vijmwdt`OyZ>S!q>mVoP+zBw2&KyTDEF>V$fZpKSZ7z7^f%-5wtmij z-xNpjdg3#)(CBTcxB&ELp@i1gYn*%k`}{5D$0#_a0xf+nCulMQCeWds*IR!wKK>*y zpe2G-%*XhN;5s`99YihY?+QxU-lUyhj0HMXyWrah-uhD^rt)838EUvw4`fJ5W z)J}lJ{r8tn0+Gvq0@`k)G(r%PS?y*x&Js-Id04MIJpEniQ$^3?Tz39x#p0eWB}EFU z3I4UYAXzBKfl$#54T0&fR^R};XsGmiiROjBZlNe#-9gUH&n+@?JBbq#EMzp|VuOB+ zZDi)2s>-6R8jd%rnw`8Qm7|E^ja+|EZ&dIIkkJ2aEt;)@x$PUsQtR?MESYCc2LLKP%b!{nd3aVlgp6^A~ zpbE{6m7+KNmD)~He8?mBkp8hWO9s`!!#)qzsInh6sX;q-P^#_c3SgYkEm*?Q@7f;PX z-6Nh$;DX2t*zxO@b-%%6eAav&?;S~N)916pp$v8U+{?}kPuhI>xy;)E9QJb# Date: Wed, 6 Dec 2017 16:04:36 -0300 Subject: [PATCH 5/6] fix merge conflict --- docs/image.md | 471 -------------------------------------------------- 1 file changed, 471 deletions(-) delete mode 100644 docs/image.md diff --git a/docs/image.md b/docs/image.md deleted file mode 100644 index d60304e4f03c98..00000000000000 --- a/docs/image.md +++ /dev/null @@ -1,471 +0,0 @@ ---- -id: image -title: Image -layout: docs -category: components -permalink: docs/image.html -next: keyboardavoidingview -previous: flatlist ---- -A React component for displaying different types of images, -including network images, static resources, temporary local images, and -images from local disk, such as the camera roll. - -This example shows fetching and displaying an image from local storage -as well as one from network and even from data provided in the `'data:'` uri scheme. - -> Note that for network and data images, you will need to manually specify the dimensions of your image! - -```ReactNativeWebPlayer -import React, { Component } from 'react'; -import { AppRegistry, View, Image } from 'react-native'; - -export default class DisplayAnImage extends Component { - render() { - return ( - - - - - - ); - } -} - -// skip this line if using Create React Native App -AppRegistry.registerComponent('DisplayAnImage', () => DisplayAnImage); -``` - -You can also add `style` to an image: - -```ReactNativeWebPlayer -import React, { Component } from 'react'; -import { AppRegistry, View, Image, StyleSheet } from 'react-native'; - -const styles = StyleSheet.create({ - stretch: { - width: 50, - height: 200 - } -}); - -export default class DisplayAnImageWithStyle extends Component { - render() { - return ( - - - - ); - } -} - -// skip these lines if using Create React Native App -AppRegistry.registerComponent( - 'DisplayAnImageWithStyle', - () => DisplayAnImageWithStyle -); -``` - -### GIF and WebP support on Android - -When building your own native code, GIF and WebP are not supported by default on Android. - -You will need to add some optional modules in `android/app/build.gradle`, depending on the needs of your app. - -``` -dependencies { - // If your app supports Android versions before Ice Cream Sandwich (API level 14) - compile 'com.facebook.fresco:animated-base-support:1.3.0' - - // For animated GIF support - compile 'com.facebook.fresco:animated-gif:1.3.0' - - // For WebP support, including animated WebP - compile 'com.facebook.fresco:animated-webp:1.3.0' - compile 'com.facebook.fresco:webpsupport:1.3.0' - - // For WebP support, without animations - compile 'com.facebook.fresco:webpsupport:1.3.0' -} -``` - -Also, if you use GIF with ProGuard, you will need to add this rule in `proguard-rules.pro` : -``` --keep class com.facebook.imagepipeline.animated.factory.AnimatedFactoryImpl { - public AnimatedFactoryImpl(com.facebook.imagepipeline.bitmaps.PlatformBitmapFactory, com.facebook.imagepipeline.core.ExecutorSupplier); -} -``` - -### Props - -- [`blurRadius`](docs/image.html#blurradius) -- [`onLayout`](docs/image.html#onlayout) -- [`onLoad`](docs/image.html#onload) -- [`onLoadEnd`](docs/image.html#onloadend) -- [`onLoadStart`](docs/image.html#onloadstart) -- [`resizeMode`](docs/image.html#resizemode) -- [`source`](docs/image.html#source) -- [`onError`](docs/image.html#onerror) -- [`testID`](docs/image.html#testid) -- [`resizeMethod`](docs/image.html#resizemethod) -- [`accessibilityLabel`](docs/image.html#accessibilitylabel) -- [`accessible`](docs/image.html#accessible) -- [`capInsets`](docs/image.html#capinsets) -- [`defaultSource`](docs/image.html#defaultsource) -- [`onPartialLoad`](docs/image.html#onpartialload) -- [`onProgress`](docs/image.html#onprogress) -- [`style`](docs/image.html#style) - - - - -### Methods - -- [`getSize`](docs/image.html#getsize) -- [`prefetch`](docs/image.html#prefetch) - - - - ---- - -# Reference - -## Props - -### `blurRadius` - -blurRadius: the blur radius of the blur filter added to the image - -| Type | Required | -| - | - | -| number | No | - - - - ---- - -### `onLayout` - -Invoked on mount and layout changes with -`{nativeEvent: {layout: {x, y, width, height}}}`. - -| Type | Required | -| - | - | -| function | No | - - - - ---- - -### `onLoad` - -Invoked when load completes successfully. - -| Type | Required | -| - | - | -| function | No | - - - - ---- - -### `onLoadEnd` - -Invoked when load either succeeds or fails. - -| Type | Required | -| - | - | -| function | No | - - - - ---- - -### `onLoadStart` - -Invoked on load start. - -e.g., `onLoadStart={(e) => this.setState({loading: true})}` - -| Type | Required | -| - | - | -| function | No | - - - - ---- - -### `resizeMode` - -Determines how to resize the image when the frame doesn't match the raw -image dimensions. - -- `cover`: Scale the image uniformly (maintain the image's aspect ratio) -so that both dimensions (width and height) of the image will be equal -to or larger than the corresponding dimension of the view (minus padding). - -- `contain`: Scale the image uniformly (maintain the image's aspect ratio) -so that both dimensions (width and height) of the image will be equal to -or less than the corresponding dimension of the view (minus padding). - -- `stretch`: Scale width and height independently, This may change the -aspect ratio of the src. - -- `repeat`: Repeat the image to cover the frame of the view. The -image will keep it's size and aspect ratio. (iOS only) - -| Type | Required | -| - | - | -| enum('cover', 'contain', 'stretch', 'repeat', 'center') | No | - - - - ---- - -### `source` - -The image source (either a remote URL or a local file resource). - -This prop can also contain several remote URLs, specified together with -their width and height and potentially with scale/other URI arguments. -The native side will then choose the best `uri` to display based on the -measured size of the image container. A `cache` property can be added to -control how networked request interacts with the local cache. - -The currently supported formats are `png`, `jpg`, `jpeg`, `bmp`, `gif`, -`webp` (Android only), `psd` (iOS only). - -| Type | Required | -| - | - | -| ImageSourcePropType | No | - - - - ---- - -### `onError` - -Invoked on load error with `{nativeEvent: {error}}`. - -| Type | Required | -| - | - | -| function | No | - - - - ---- - -### `testID` - -A unique identifier for this element to be used in UI Automation -testing scripts. - -| Type | Required | -| - | - | -| string | No | - - - - ---- - -### `resizeMethod` - -The mechanism that should be used to resize the image when the image's dimensions -differ from the image view's dimensions. Defaults to `auto`. - -- `auto`: Use heuristics to pick between `resize` and `scale`. - -- `resize`: A software operation which changes the encoded image in memory before it -gets decoded. This should be used instead of `scale` when the image is much larger -than the view. - -- `scale`: The image gets drawn downscaled or upscaled. Compared to `resize`, `scale` is -faster (usually hardware accelerated) and produces higher quality images. This -should be used if the image is smaller than the view. It should also be used if the -image is slightly bigger than the view. - -More details about `resize` and `scale` can be found at http://frescolib.org/docs/resizing-rotating.html. - - - -| Type | Required | Platform | -| - | - | - | -| enum('auto', 'resize', 'scale') | No | Android | - - - - ---- - -### `accessibilityLabel` - -The text that's read by the screen reader when the user interacts with -the image. - - -| Type | Required | Platform | -| - | - | - | -| node | No | iOS | - - - - ---- - -### `accessible` - -When true, indicates the image is an accessibility element. - - -| Type | Required | Platform | -| - | - | - | -| bool | No | iOS | - - - - ---- - -### `capInsets` - -When the image is resized, the corners of the size specified -by `capInsets` will stay a fixed size, but the center content and borders -of the image will be stretched. This is useful for creating resizable -rounded buttons, shadows, and other resizable assets. More info in the -[official Apple documentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/index.html#//apple_ref/occ/instm/UIImage/resizableImageWithCapInsets). - - - -| Type | Required | Platform | -| - | - | - | -| object: {top: number, left: number, bottom: number, right: number} | No | iOS | - - - - ---- - -### `defaultSource` - -A static image to display while loading the image source. - -- `uri` - a string representing the resource identifier for the image, which -should be either a local file path or the name of a static image resource -(which should be wrapped in the `require('./path/to/image.png')` function). -- `width`, `height` - can be specified if known at build time, in which case -these will be used to set the default `` component dimensions. -- `scale` - used to indicate the scale factor of the image. Defaults to 1.0 if -unspecified, meaning that one image pixel equates to one display point / DIP. -- `number` - Opaque type returned by something like `require('./image.jpg')`. - - - -| Type | Required | Platform | -| - | - | - | -| object: {uri: string,width: number,height: number,scale: number}, ,number | No | iOS | - - - - ---- - -### `onPartialLoad` - -Invoked when a partial load of the image is complete. The definition of -what constitutes a "partial load" is loader specific though this is meant -for progressive JPEG loads. - - -| Type | Required | Platform | -| - | - | - | -| function | No | iOS | - - - - ---- - -### `onProgress` - -Invoked on download progress with `{nativeEvent: {loaded, total}}`. - - -| Type | Required | Platform | -| - | - | - | -| function | No | iOS | - - ---- - -### `style` - -| Type | Required | -| - | - | -| [style](docs/imagestyleproptypes.html) | No | - -## Methods - -### `getSize()` - -```javascript -static getSize(uri: string, success: function, [failure]: function): void -``` - -Retrieve the width and height (in pixels) of an image prior to displaying it. This method can fail if the image cannot be found, or fails to download. - -In order to retrieve the image dimensions, the image may first need to be loaded or downloaded, after which it will be cached. This means that in principle you could use this method to preload images, however it is not optimized for that purpose, and may in future be implemented in a way that does not fully load/download the image data. A proper, supported way to preload images will be provided as a separate API. - -Does not work for static image resources. - -**Parameters:** - -| Name | Type | Required | Description | -| - | - | - | - | -| uri | string | Yes | The location of the image. | -| success | function | Yes | The function that will be called if the image was successfully found and widthand height retrieved. | -| failure | function | No | The function that will be called if there was an error, such as failing toto retrieve the image. | - - - - ---- - -### `prefetch()` - -```javascript -Image.prefetch(url: string): -``` - -Prefetches a remote image for later use by downloading it to the disk -cache - -**Parameters:** - -| Name | Type | Required | Description | -| - | - | - | - | -| url | string | Yes | The remote location of the image. | - - - - From bf4f5d1fd820a9927e0f9f83612bc04c954f2df8 Mon Sep 17 00:00:00 2001 From: Gustavo Gard Date: Wed, 6 Dec 2017 16:12:17 -0300 Subject: [PATCH 6/6] fix merge conflict --- docs/Images.md | 212 ------------------------------------------------- 1 file changed, 212 deletions(-) delete mode 100644 docs/Images.md diff --git a/docs/Images.md b/docs/Images.md deleted file mode 100644 index c92c5e0cff2d57..00000000000000 --- a/docs/Images.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -id: images -title: Images -layout: docs -category: Guides -permalink: docs/images.html -next: animations -previous: navigation ---- - -## Static Image Resources - -React Native provides a unified way of managing images and other media assets in your iOS and Android apps. To add a static image to your app, place it somewhere in your source code tree and reference it like this: - -```javascript - -``` - -The image name is resolved the same way JS modules are resolved. In the example above, the packager will look for `my-icon.png` in the same folder as the component that requires it. Also, if you have `my-icon.ios.png` and `my-icon.android.png`, the packager will pick the correct file for the platform. - -You can also use the `@2x` and `@3x` suffixes to provide images for different screen densities. If you have the following file structure: - -``` -. -├── button.js -└── img - ├── check@2x.png - └── check@3x.png -``` - -...and `button.js` code contains: - -```javascript - -``` - -...the packager will bundle and serve the image corresponding to device's screen density. For example, `check@2x.png`, will be used on an iPhone 7, while`check@3x.png` will be used on an iPhone 7 Plus or a Nexus 5. If there is no image matching the screen density, the closest best option will be selected. - -On Windows, you might need to restart the packager if you add new images to your project. - -Here are some benefits that you get: - -1. Same system on iOS and Android. -2. Images live in the same folder as your JavaScript code. Components are self-contained. -3. No global namespace, i.e. you don't have to worry about name collisions. -4. Only the images that are actually used will be packaged into your app. -5. Adding and changing images doesn't require app recompilation, just refresh the simulator as you normally do. -6. The packager knows the image dimensions, no need to duplicate it in the code. -7. Images can be distributed via [npm](https://www.npmjs.com/) packages. - -In order for this to work, the image name in `require` has to be known statically. - -```javascript -// GOOD - - -// BAD -var icon = this.props.active ? 'my-icon-active' : 'my-icon-inactive'; - - -// GOOD -var icon = this.props.active ? require('./my-icon-active.png') : require('./my-icon-inactive.png'); - -``` - -Note that image sources required this way include size (width, height) info for the Image. If you need to scale the image dynamically (i.e. via flex), you may need to manually set `{ width: undefined, height: undefined }` on the style attribute. - -## Static Non-Image Resources - -The `require` syntax described above can be used to statically include audio, video or document files in your project as well. Most common file types are supported including `.mp3`, `.wav`, `.mp4`, `.mov`, `.html` and `.pdf`. See [packager defaults](https://github.com/facebook/metro/blob/master/packages/metro/src/defaults.js#L13-L18) for the full list. - -You can add support for other types by creating a packager config file (see the [packager config file](https://github.com/facebook/react-native/blob/master/local-cli/util/Config.js#L34-L39) for the full list of configuration options). - -A caveat is that videos must use absolute positioning instead of `flexGrow`, since size info is not currently passed for non-image assets. This limitation doesn't occur for videos that are linked directly into Xcode or the Assets folder for Android. - -## Images From Hybrid App's Resources - -If you are building a hybrid app (some UIs in React Native, some UIs in platform code) you can still use images that are already bundled into the app. - -For images included via Xcode asset catalogs or in the Android drawable folder, use the image name without the extension: - -```javascript - -``` - -For images in the Android assets folder, use the `asset:/` scheme: - -```javascript - -``` - -These approaches provide no safety checks. It's up to you to guarantee that those images are available in the application. Also you have to specify image dimensions manually. - -## Network Images - -Many of the images you will display in your app will not be available at compile time, or you will want to load some dynamically to keep the binary size down. Unlike with static resources, *you will need to manually specify the dimensions of your image*. It's highly recommended that you use https as well in order to satisfy [App Transport Security](docs/running-on-device.html#app-transport-security) requirements on iOS. - -```javascript -// GOOD - - -// BAD - -``` - -### Network Requests for Images - - If you would like to set such things as the HTTP-Verb, Headers or a Body along with the image request, you may do this by defining these properties on the source object: - - ```javascript - - ``` - -## Uri Data Images - -Sometimes, you might be getting encoded image data from a REST API call. You can use the `'data:'` uri scheme to use these images. Same as for network resources, *you will need to manually specify the dimensions of your image*. - -> This is recommended for very small and dynamic images only, like icons in a list from a DB. - -```javascript -// include at least width and height! - -``` - -### Cache Control (iOS Only) - -In some cases you might only want to display an image if it is already in the local cache, i.e. a low resolution placeholder until a higher resolution is available. In other cases you do not care if the image is outdated and are willing to display an outdated image to save bandwidth. The `cache` source property gives you control over how the network layer interacts with the cache. - -* `default`: Use the native platforms default strategy. -* `reload`: The data for the URL will be loaded from the originating source. -No existing cache data should be used to satisfy a URL load request. -* `force-cache`: The existing cached data will be used to satisfy the request, -regardless of its age or expiration date. If there is no existing data in the cache -corresponding the request, the data is loaded from the originating source. -* `only-if-cached`: The existing cache data will be used to satisfy a request, regardless of -its age or expiration date. If there is no existing data in the cache corresponding -to a URL load request, no attempt is made to load the data from the originating source, -and the load is considered to have failed. - -```javascript - -``` - -## Local Filesystem Images - -See [CameraRoll](docs/cameraroll.html) for an example of -using local resources that are outside of `Images.xcassets`. - -### Best Camera Roll Image - -iOS saves multiple sizes for the same image in your Camera Roll, it is very important to pick the one that's as close as possible for performance reasons. You wouldn't want to use the full quality 3264x2448 image as source when displaying a 200x200 thumbnail. If there's an exact match, React Native will pick it, otherwise it's going to use the first one that's at least 50% bigger in order to avoid blur when resizing from a close size. All of this is done by default so you don't have to worry about writing the tedious (and error prone) code to do it yourself. - -## Why Not Automatically Size Everything? - -*In the browser* if you don't give a size to an image, the browser is going to render a 0x0 element, download the image, and then render the image based with the correct size. The big issue with this behavior is that your UI is going to jump all around as images load, this makes for a very bad user experience. - -*In React Native* this behavior is intentionally not implemented. It is more work for the developer to know the dimensions (or aspect ratio) of the remote image in advance, but we believe that it leads to a better user experience. Static images loaded from the app bundle via the `require('./my-icon.png')` syntax *can be automatically sized* because their dimensions are available immediately at the time of mounting. - -For example, the result of `require('./my-icon.png')` might be: - -```javascript -{"__packager_asset":true,"uri":"my-icon.png","width":591,"height":573} -``` - -## Source as an object - -In React Native, one interesting decision is that the `src` attribute is named `source` and doesn't take a string but an object with a `uri` attribute. - -```javascript - -``` - -On the infrastructure side, the reason is that it allows us to attach metadata to this object. For example if you are using `require('./my-icon.png')`, then we add information about its actual location and size (don't rely on this fact, it might change in the future!). This is also future proofing, for example we may want to support sprites at some point, instead of outputting `{uri: ...}`, we can output `{uri: ..., crop: {left: 10, top: 50, width: 20, height: 40}}` and transparently support spriting on all the existing call sites. - -On the user side, this lets you annotate the object with useful attributes such as the dimension of the image in order to compute the size it's going to be displayed in. Feel free to use it as your data structure to store more information about your image. - -## Background Image via Nesting - -A common feature request from developers familiar with the web is `background-image`. To handle this use case, you can use the `` component, which has the same props as ``, and add whatever children to it you would like to layer on top of it. - -You might not want to use `` in some cases, since the implementation is very simple. Refer to ``'s [source code](https://github.com/facebook/react-native/blob/master/Libraries/Image/ImageBackground.js) for more insight, and create your own custom component when needed. - -```javascript -return ( - - Inside - -); -``` - -## iOS Border Radius Styles - -Please note that the following corner specific, border radius style properties are currently ignored by iOS's image component: - -* `borderTopLeftRadius` -* `borderTopRightRadius` -* `borderBottomLeftRadius` -* `borderBottomRightRadius` - -## Off-thread Decoding - -Image decoding can take more than a frame-worth of time. This is one of the major sources of frame drops on the web because decoding is done in the main thread. In React Native, image decoding is done in a different thread. In practice, you already need to handle the case when the image is not downloaded yet, so displaying the placeholder for a few more frames while it is decoding does not require any code change.