react-native-camera-kit-no-.../ios/lib/ReactNativeCameraKit/CKGalleryCustomCollectionViewCell.m
2020-10-23 10:51:48 -07:00

99 lines
3.2 KiB
Objective-C

#import "CKGalleryCustomCollectionViewCell.h"
#if __has_include(<React/RCTBridge.h>)
#import <React/RCTConvert.h>
#else
#import "RCTConvert.h"
#endif
#if __has_include(<React/RCTRootView.h>)
#import <React/RCTRootView.h>
#else
#import "RCTRootView.h"
#endif
#if __has_include(<React/RCTRootViewDelegate.h>)
#import <React/RCTRootViewDelegate.h>
#else
#import "RCTRootViewDelegate.h"
#endif
@interface CKGalleryCustomCollectionViewCell () <RCTRootViewDelegate>
{
RCTRootView *_componentRootView;
UIImageView *_imageView;
NSDictionary *_prevStyleDict;
}
@end
@implementation CKGalleryCustomCollectionViewCell
-(void) applyStyle:(NSDictionary*)styleDict {
if (styleDict[CUSOM_BUTTON_COMPONENT]) {
if (!_componentRootView) {
_componentRootView = [[RCTRootView alloc] initWithBridge:self.bridge moduleName:styleDict[CUSOM_BUTTON_COMPONENT] initialProperties:nil];
_componentRootView.delegate = self;
_componentRootView.frame = self.bounds;
_componentRootView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_componentRootView.backgroundColor = [UIColor clearColor];
[self addSubview:_componentRootView];
} else {
_componentRootView.frame = self.bounds;
}
}
if (_componentRootView == nil) {
id imageProps = styleDict[CUSOM_BUTTON_IMAGE];
if (imageProps) {
UIImage *image = [self getImage:imageProps];
if (!_imageView) {
_imageView = [[UIImageView alloc] initWithImage:image];
_imageView.backgroundColor = [UIColor clearColor];
_imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_imageView.frame = self.bounds;
_imageView.contentMode = UIViewContentModeCenter;
[self addSubview:_imageView];
} else {
_imageView.frame = self.bounds;
_imageView.image = image;
}
}
id backgroundColorProps = styleDict[CUSOM_BUTTON_BACKGROUND_COLOR];
if (backgroundColorProps) {
UIColor *backgroundColor = [RCTConvert UIColor:backgroundColorProps];
self.backgroundColor = backgroundColor;
}
}
_prevStyleDict = styleDict;
}
-(UIImage*)getImage:(NSDictionary*)currentImageProps {
//if it's the same image - don't load it again
UIImage *image = nil;
if (_prevStyleDict == nil) {
image = [RCTConvert UIImage:currentImageProps];
} else {
NSDictionary *prevImageProps = _prevStyleDict[CUSOM_BUTTON_IMAGE];
if (prevImageProps == nil || (prevImageProps != nil && ![prevImageProps isEqualToDictionary:currentImageProps])) {
image = [RCTConvert UIImage:currentImageProps];
} else if (_imageView != nil) {
image = _imageView.image;
}
}
return image;
}
#pragma - mark RCTRootViewDelegate methods
- (void)rootViewDidChangeIntrinsicSize:(RCTRootView *)rootView {
if (rootView == _componentRootView) {
[rootView setFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
}
}
@end