From ddc374fac813c5e66da47bbd10a9de7c30661a99 Mon Sep 17 00:00:00 2001 From: Urban Cvek Date: Tue, 24 May 2016 01:52:01 -0700 Subject: [PATCH] Add renderAsOriginal to selectedIcon Summary: Hey, I've created a PR a few weeks ago #7264. It got merged in and then I received some emails and got mentioned in a few issues that it doesn't use renderAsOriginal prop on selectedIcon. Instead the app would use tint color. The problem can be seen here #7467. I've now added a method in TabBarItem that sets selectedIcon to renderAsOriginal if the prop is set. I added a "relay" icon to UIExplorer TabBarIOS example so you can see the item is now rendered in color as the image supplied. Oh and also should this PR be made from master. Had to work on this issue from 0.27 because the master was broken for me. Closes https://github.com/facebook/react-native/pull/7709 Differential Revision: D3339795 fbshipit-source-id: d8d4699bb617ecae8996a6627f3774c6473c19e0 --- Examples/UIExplorer/TabBarIOSExample.js | 1 + Examples/UIExplorer/relay@3x.png | Bin 0 -> 1809 bytes React/Views/RCTTabBarItem.h | 1 + React/Views/RCTTabBarItem.m | 11 +++++++++++ React/Views/RCTTabBarItemManager.m | 2 +- 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Examples/UIExplorer/relay@3x.png diff --git a/Examples/UIExplorer/TabBarIOSExample.js b/Examples/UIExplorer/TabBarIOSExample.js index e1ef10a25..435f2de21 100644 --- a/Examples/UIExplorer/TabBarIOSExample.js +++ b/Examples/UIExplorer/TabBarIOSExample.js @@ -82,6 +82,7 @@ var TabBarExample = React.createClass({ {@$?R%uZCUMgZ~ zDV|i-R#ZI1QhJNJNNvyi2k*Q&XJ*cvIrDi^ZBS->++y4S0Duo+Zen-o*#8p5d8y$m z`3{%H7HMZ@1Zbd(Zvgtohops8vk|zNRIg`Z&J$SjmdmhOE-lGh`PloFP?`}(KhoA#DPC1}p3?qi zfr5z6zR(C8Sd7jklNY)feNFzocM89s_Oj@q>q=5Yetw{l0SLqIT;sX9yd^!aaeIy6|HH$wg2S3r zHDxglVfga5et;!2Hh%E_Q_DBGi8UIv0^PFj*;KMz4{C|x`fFIE8%Cy!1C;7QQkjN* zOzAGAUa7eg-IenM6HX|4Pt9r5tc<8Ww%etah!IrS^vzKd!&(XErP~lA<=M}+P`s^O zx?wlWUdnxca^}1)p{d;lOwpW2o?<uW7$ttBP64dLadKeTXnPh@rte}B4*Byr2-J+RO)DwfI2 zCTkW@TWt%ij`^)#3Uy4#Y0T)fK8v*pHJex9xw{j{?-no&TAB#9Uk?fsRz8TAupVv{ zRNm{HlsV3_!23DokxwQEd>4cB2@(wf{BBM7mGSl(Ash&ww-H!o&t%v}FYErqSKuCT zEy|!oH*U_te7)S?n7L$4j>acJG-dH?Yc|w%Bre4r)hubsd|-G;>c=?#o#UAnP>OjS zH~H_Wf;02VV2n3^I>#LRi&s}EUpLk75Cx)n=cqgAK7FAbbw{+-YL*<2C5lvL=;)`i z9ZEa9j6}|y8ZW4#{^9FId?$4y1plw{rs-cwDn^n~E_1U#vRVe5r0A#9NOYN^XAa{x z_-grZP1{3l-L>*GL0|rcHZhj_;wWV$2#;^0tTl_dYG(?~;*jW(xEbbtOc717G=a-*l-^5sOK=m12;ZLr{75I^-w8I456 z1jc7c1R>}0$tnp0a{G&AqW!(Bl}CT-Yb9IulE9Rzh$2XYD>}bc)+6b-81gh!a;UJq zl1C>@iBlfiTyQqnd3$L7xuOFSzoY24NjB?(9=YRWmNdI<>SW_ZB4o5lU;Cewt{^1| zcgeyp)Y}AlrK=lbtP{@EnHg8#YVxV}A4b&GbI?Ri!u3e-vU)*|VD8(62Nwf*LGliHv5)M^?_;gdxBjzhAh zjA6Kzghc;kZ66ix@vtkwXEGWf+ELI;qEhoU`nEY^$Yl%_1Z#mJ6M_aq?`?nvx{I!F zzg6X}D3TPLX+~&GdfjUPGa^?Wyb(4DRt&@Fko4GjtILtGlYEAbm$j8oq5TYL z)-d!*=9JWxvl^a`0ej5C{Mr-koW29z=QPv&ld-Lkk>5jGqDJD5_B1yjN3gb{WzbG6 zUh^W=Y6)=N@0q|d^mDbY3GMIARr|h%xA(&j>4??gMaHq-k?#%fJ4-LzradQ0urf#d zZg-6mGC5<~?W}61JbJV#$De~8!t8xe4?41R=77x0zEw+>a&gwld(Ro4@hvd-lNzU%8>+y8)=h!<2qWi8b zOFlkdZh&2LnVmoc(*OKn$@vFWNiM1nrm7PvoQw`U21S0n-FVSAZf3U`<%dIhtC2V! zF+6ihuvb6ToDd#YMj6%}rWpb|0;u1Oflg*ESO2e9Fp|OnFMw!?cO`ksBCi3LK>UF+ JX)y9k`VS_=QW^jN literal 0 HcmV?d00001 diff --git a/React/Views/RCTTabBarItem.h b/React/Views/RCTTabBarItem.h index 30919ed8b..5631f58b7 100644 --- a/React/Views/RCTTabBarItem.h +++ b/React/Views/RCTTabBarItem.h @@ -15,6 +15,7 @@ @property (nonatomic, copy) id /* NSString or NSNumber */ badge; @property (nonatomic, strong) UIImage *icon; +@property (nonatomic, strong) UIImage *selectedIcon; @property (nonatomic, assign) UITabBarSystemItem systemIcon; @property (nonatomic, assign) BOOL renderAsOriginal; @property (nonatomic, assign, getter=isSelected) BOOL selected; diff --git a/React/Views/RCTTabBarItem.m b/React/Views/RCTTabBarItem.m index 06f313f1a..fdc0ee52c 100644 --- a/React/Views/RCTTabBarItem.m +++ b/React/Views/RCTTabBarItem.m @@ -92,6 +92,17 @@ RCT_ENUM_CONVERTER(UITabBarSystemItem, (@{ } } +- (void)setSelectedIcon:(UIImage *)selectedIcon +{ + _selectedIcon = selectedIcon; + + if (_renderAsOriginal) { + self.barItem.selectedImage = [_selectedIcon imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + } else { + self.barItem.selectedImage = _selectedIcon; + } +} + - (UIViewController *)reactViewController { return self.superview.reactViewController; diff --git a/React/Views/RCTTabBarItemManager.m b/React/Views/RCTTabBarItemManager.m index ca807c9df..9bfa13deb 100644 --- a/React/Views/RCTTabBarItemManager.m +++ b/React/Views/RCTTabBarItemManager.m @@ -25,7 +25,7 @@ RCT_EXPORT_VIEW_PROPERTY(badge, id /* NSString or NSNumber */) RCT_EXPORT_VIEW_PROPERTY(renderAsOriginal, BOOL) RCT_EXPORT_VIEW_PROPERTY(selected, BOOL) RCT_EXPORT_VIEW_PROPERTY(icon, UIImage) -RCT_REMAP_VIEW_PROPERTY(selectedIcon, barItem.selectedImage, UIImage) +RCT_EXPORT_VIEW_PROPERTY(selectedIcon, UIImage) RCT_EXPORT_VIEW_PROPERTY(systemIcon, UITabBarSystemItem) RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock) RCT_CUSTOM_VIEW_PROPERTY(title, NSString, RCTTabBarItem)