From a4ef3cc1e6f9e78d89254f791fad6fdae43df989 Mon Sep 17 00:00:00 2001 From: Krzysztof Jan Modras Date: Mon, 26 Aug 2019 12:37:05 +0200 Subject: [PATCH] NativeDrawable: save tint info on image - fixes #460 (#461) The view is the singleton so once tint was set the hasTint was always true. --- .../React Components/Modules/NativeDrawable.m | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Cliqz/React Components/Modules/NativeDrawable.m b/Cliqz/React Components/Modules/NativeDrawable.m index 3a710f8a5..225b1ad65 100644 --- a/Cliqz/React Components/Modules/NativeDrawable.m +++ b/Cliqz/React Components/Modules/NativeDrawable.m @@ -10,30 +10,35 @@ #import #import -@interface NativeDrawable : RCTViewManager +@interface NativeDrawableImageView : UIImageView @property BOOL hasTint; @end +@implementation NativeDrawableImageView +@end + +@interface NativeDrawable : RCTViewManager +@end + @implementation NativeDrawable RCT_EXPORT_MODULE() - (UIImageView *)view { - UIImageView* imageView = [[UIImageView alloc] init]; + NativeDrawableImageView* imageView = [[NativeDrawableImageView alloc] init]; [imageView setContentMode:UIViewContentModeScaleAspectFit]; return imageView; } RCT_CUSTOM_VIEW_PROPERTY(color, NSString, UIImageView) { NSString *color_str = (NSString*)json; - UIColor* color = [NativeDrawable colorFromHexString:color_str]; - if (color != nil) { + UIColor* uicolor = [NativeDrawable colorFromHexString:color_str]; + if (uicolor) { view.image = [view.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; - [view setTintColor: color]; - [self setHasTint:YES]; - } - else { + [view setTintColor: uicolor]; + [(NativeDrawableImageView*)view setHasTint:YES]; + } else { NSLog(@"color %@ is not valid", json); } } @@ -41,16 +46,15 @@ - (UIImageView *)view RCT_CUSTOM_VIEW_PROPERTY(source, NSString, UIImageView) { NSString *imageName = (NSString*)json; - if (imageName != nil) { + if (imageName) { UIImage* image = [UIImage imageNamed:imageName]; - if (self.hasTint) { + if (((NativeDrawableImageView*) view).hasTint) { image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; } - if (image != nil) { + if (image) { [view setImage:image]; - } - else { + } else { NSLog(@"image %@ is missing", imageName); } }