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