Fixed image tinting

Summary:
public

A previous refactor introduced a bug where setting the tintColor of an <Image> to null no longer cleared the tint. This fixes it again.

Reviewed By: javache

Differential Revision: D2744279

fb-gh-sync-id: 1b5e0d546bf456d7b93e2ceee73c568c185c305c
This commit is contained in:
Nick Lockwood 2015-12-10 09:06:02 -08:00 committed by facebook-github-bot-6
parent 6355011d17
commit ce7c0b735f
2 changed files with 8 additions and 7 deletions

View File

@ -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) {

View File

@ -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