From ce7c0b735f476a4618fd0d68fc39157a0bdb4f57 Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Thu, 10 Dec 2015 09:06:02 -0800 Subject: [PATCH] Fixed image tinting Summary: public A previous refactor introduced a bug where setting the tintColor of an to null no longer cleared the tint. This fixes it again. Reviewed By: javache Differential Revision: D2744279 fb-gh-sync-id: 1b5e0d546bf456d7b93e2ceee73c568c185c305c --- Libraries/Image/RCTImageView.m | 6 ------ Libraries/Image/RCTImageViewManager.m | 9 ++++++++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Libraries/Image/RCTImageView.m b/Libraries/Image/RCTImageView.m index 656dd61e8..712f7e7a5 100644 --- a/Libraries/Image/RCTImageView.m +++ b/Libraries/Image/RCTImageView.m @@ -108,12 +108,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init) } } -- (void)setTintColor:(UIColor *)tintColor -{ - super.tintColor = tintColor; - self.renderingMode = tintColor ? UIImageRenderingModeAlwaysTemplate : UIImageRenderingModeAlwaysOriginal; -} - - (void)setRenderingMode:(UIImageRenderingMode)renderingMode { if (_renderingMode != renderingMode) { diff --git a/Libraries/Image/RCTImageViewManager.m b/Libraries/Image/RCTImageViewManager.m index c20678895..d318d1f04 100644 --- a/Libraries/Image/RCTImageViewManager.m +++ b/Libraries/Image/RCTImageViewManager.m @@ -33,6 +33,13 @@ RCT_EXPORT_VIEW_PROPERTY(onLoad, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onLoadEnd, RCTDirectEventBlock) RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode, UIViewContentMode) RCT_EXPORT_VIEW_PROPERTY(source, RCTImageSource) -RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor) +RCT_CUSTOM_VIEW_PROPERTY(tintColor, UIColor, RCTImageView) +{ + // Default tintColor isn't nil - it's inherited from the superView - but we + // want to treat a null json value for `tintColor` as meaning 'disable tint', + // so we toggle `renderingMode` here instead of in `-[RCTImageView setTintColor:]` + view.tintColor = [RCTConvert UIColor:json] ?: defaultView.tintColor; + view.renderingMode = json ? UIImageRenderingModeAlwaysTemplate : defaultView.renderingMode; +} @end