Ported ART to new UIManager
This commit is contained in:
parent
7fb8bff66b
commit
8799f0c487
|
@ -18,7 +18,7 @@
|
|||
|
||||
RCT_EXPORT_VIEW_PROPERTY(capInsets)
|
||||
RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(src, RCTStaticImage *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(src, RCTStaticImage)
|
||||
{
|
||||
if (json) {
|
||||
if ([[[json description] pathExtension] caseInsensitiveCompare:@"gif"] == NSOrderedSame) {
|
||||
|
@ -30,7 +30,7 @@ RCT_CUSTOM_VIEW_PROPERTY(src, RCTStaticImage *)
|
|||
view.image = defaultView.image;
|
||||
}
|
||||
}
|
||||
RCT_CUSTOM_VIEW_PROPERTY(tintColor, RCTStaticImage *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(tintColor, RCTStaticImage)
|
||||
{
|
||||
if (json) {
|
||||
view.renderingMode = UIImageRenderingModeAlwaysTemplate;
|
||||
|
@ -40,7 +40,7 @@ RCT_CUSTOM_VIEW_PROPERTY(tintColor, RCTStaticImage *)
|
|||
view.tintColor = defaultView.tintColor;
|
||||
}
|
||||
}
|
||||
RCT_CUSTOM_VIEW_PROPERTY(imageTag, RCTStaticImage *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(imageTag, RCTStaticImage)
|
||||
{
|
||||
if (json) {
|
||||
[RCTImageLoader loadImageWithTag:[RCTConvert NSString:json] callback:^(NSError *error, UIImage *image) {
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
}
|
||||
|
||||
RCT_REMAP_VIEW_PROPERTY(containerBackgroundColor, backgroundColor)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, RCTText *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, RCTText)
|
||||
{
|
||||
NSLineBreakMode truncationMode = NSLineBreakByClipping;
|
||||
view.numberOfLines = json ? [RCTConvert NSInteger:json] : defaultView.numberOfLines;
|
||||
|
@ -34,16 +34,16 @@ RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, RCTText *)
|
|||
view.lineBreakMode = truncationMode;
|
||||
}
|
||||
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowText *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowText)
|
||||
{
|
||||
view.textBackgroundColor = json ? [RCTConvert UIColor:json] : defaultView.textBackgroundColor;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(containerBackgroundColor, RCTShadowText *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(containerBackgroundColor, RCTShadowText)
|
||||
{
|
||||
view.backgroundColor = json ? [RCTConvert UIColor:json] : defaultView.backgroundColor;
|
||||
view.isBGColorExplicitlySet = json ? YES : defaultView.isBGColorExplicitlySet;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, RCTShadowText *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, RCTShadowText)
|
||||
{
|
||||
NSLineBreakMode truncationMode = NSLineBreakByClipping;
|
||||
view.maxNumberOfLines = json ? [RCTConvert NSInteger:json] : defaultView.maxNumberOfLines;
|
||||
|
@ -52,7 +52,7 @@ RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, RCTShadowText *)
|
|||
}
|
||||
view.truncationMode = truncationMode;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(textAlign, RCTShadowText *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(textAlign, RCTShadowText)
|
||||
{
|
||||
view.textAlign = json ? [RCTConvert NSTextAlignment:json] : defaultView.textAlign;
|
||||
}
|
||||
|
|
|
@ -44,6 +44,9 @@
|
|||
+ (CGRect)CGRect:(id)json;
|
||||
+ (UIEdgeInsets)UIEdgeInsets:(id)json;
|
||||
|
||||
+ (CGLineCap)CGLineCap:(id)json;
|
||||
+ (CGLineJoin)CGLineJoin:(id)json;
|
||||
|
||||
+ (CATransform3D)CATransform3D:(id)json;
|
||||
+ (CGAffineTransform)CGAffineTransform:(id)json;
|
||||
|
||||
|
@ -103,3 +106,117 @@ id RCTConvertValue(id target, NSString *keypath, id json);
|
|||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This macro is used for creating converter functions with arbitrary logic.
|
||||
*/
|
||||
#define RCT_CONVERTER_CUSTOM(type, name, code) \
|
||||
+ (type)name:(id)json \
|
||||
{ \
|
||||
if (json == [NSNull null]) { \
|
||||
json = nil; \
|
||||
} \
|
||||
@try { \
|
||||
return code; \
|
||||
} \
|
||||
@catch (__unused NSException *e) { \
|
||||
RCTLogError(@"JSON value '%@' of type '%@' cannot be converted to '%s'", \
|
||||
json, [json class], #type); \
|
||||
json = nil; \
|
||||
return code; \
|
||||
} \
|
||||
}
|
||||
|
||||
/**
|
||||
* This macro is used for creating simple converter functions that just call
|
||||
* the specified getter method on the json value.
|
||||
*/
|
||||
#define RCT_CONVERTER(type, name, getter) \
|
||||
RCT_CONVERTER_CUSTOM(type, name, [json getter])
|
||||
|
||||
/**
|
||||
* This macro is used for creating converters for enum types.
|
||||
*/
|
||||
#define RCT_ENUM_CONVERTER(type, values, default, getter) \
|
||||
+ (type)type:(id)json \
|
||||
{ \
|
||||
static NSDictionary *mapping; \
|
||||
static dispatch_once_t onceToken; \
|
||||
dispatch_once(&onceToken, ^{ \
|
||||
mapping = values; \
|
||||
}); \
|
||||
if (!json || json == [NSNull null]) { \
|
||||
return default; \
|
||||
} \
|
||||
if ([json isKindOfClass:[NSNumber class]]) { \
|
||||
if ([[mapping allValues] containsObject:json] || [json getter] == default) { \
|
||||
return [json getter]; \
|
||||
} \
|
||||
RCTLogError(@"Invalid %s '%@'. should be one of: %@", #type, json, [mapping allValues]); \
|
||||
return default; \
|
||||
} \
|
||||
if (![json isKindOfClass:[NSString class]]) { \
|
||||
RCTLogError(@"Expected NSNumber or NSString for %s, received %@: %@", #type, [json class], json); \
|
||||
} \
|
||||
id value = mapping[json]; \
|
||||
if(!value && [json description].length > 0) { \
|
||||
RCTLogError(@"Invalid %s '%@'. should be one of: %@", #type, json, [mapping allKeys]); \
|
||||
} \
|
||||
return value ? [value getter] : default; \
|
||||
}
|
||||
|
||||
/**
|
||||
* This macro is used for creating converter functions for structs that consist
|
||||
* of a number of CGFloat properties, such as CGPoint, CGRect, etc.
|
||||
*/
|
||||
#define RCT_CGSTRUCT_CONVERTER(type, values) \
|
||||
+ (type)type:(id)json \
|
||||
{ \
|
||||
@try { \
|
||||
static NSArray *fields; \
|
||||
static NSUInteger count; \
|
||||
static dispatch_once_t onceToken; \
|
||||
dispatch_once(&onceToken, ^{ \
|
||||
fields = values; \
|
||||
count = [fields count]; \
|
||||
}); \
|
||||
type result; \
|
||||
if ([json isKindOfClass:[NSArray class]]) { \
|
||||
if ([json count] != count) { \
|
||||
RCTLogError(@"Expected array with count %zd, but count is %zd: %@", count, [json count], json); \
|
||||
} else { \
|
||||
for (NSUInteger i = 0; i < count; i++) { \
|
||||
((CGFloat *)&result)[i] = [json[i] doubleValue]; \
|
||||
} \
|
||||
} \
|
||||
} else if ([json isKindOfClass:[NSDictionary class]]) { \
|
||||
for (NSUInteger i = 0; i < count; i++) { \
|
||||
((CGFloat *)&result)[i] = [json[fields[i]] doubleValue]; \
|
||||
} \
|
||||
} else if (json && json != [NSNull null]) { \
|
||||
RCTLogError(@"Expected NSArray or NSDictionary for %s, received %@: %@", #type, [json class], json); \
|
||||
} \
|
||||
return result; \
|
||||
} \
|
||||
@catch (__unused NSException *e) { \
|
||||
RCTLogError(@"JSON value '%@' cannot be converted to '%s'", json, #type); \
|
||||
type result; \
|
||||
return result; \
|
||||
} \
|
||||
}
|
||||
|
||||
/**
|
||||
* This macro is used for creating converter functions for typed arrays.
|
||||
*/
|
||||
#define RCT_ARRAY_CONVERTER(type) \
|
||||
+ (NSArray *)type##Array:(id)json \
|
||||
{ \
|
||||
NSMutableArray *values = [[NSMutableArray alloc] init]; \
|
||||
for (id jsonValue in [self NSArray:json]) { \
|
||||
id value = [self type:jsonValue]; \
|
||||
if (value) { \
|
||||
[values addObject:value]; \
|
||||
} \
|
||||
} \
|
||||
return values; \
|
||||
}
|
||||
|
|
|
@ -11,100 +11,6 @@ NSString *const RCTDefaultFontName = @"HelveticaNeue";
|
|||
NSString *const RCTDefaultFontWeight = @"normal";
|
||||
NSString *const RCTBoldFontWeight = @"bold";
|
||||
|
||||
#define RCT_CONVERTER_CUSTOM(type, name, code) \
|
||||
+ (type)name:(id)json \
|
||||
{ \
|
||||
@try { \
|
||||
return code; \
|
||||
} \
|
||||
@catch (__unused NSException *e) { \
|
||||
RCTLogError(@"JSON value '%@' of type '%@' cannot be converted to '%s'", \
|
||||
json, [json class], #type); \
|
||||
json = nil; \
|
||||
return code; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define RCT_CONVERTER(type, name, getter) \
|
||||
RCT_CONVERTER_CUSTOM(type, name, [json getter])
|
||||
|
||||
#define RCT_ENUM_CONVERTER(type, values, default, getter) \
|
||||
+ (type)type:(id)json \
|
||||
{ \
|
||||
static NSDictionary *mapping; \
|
||||
static dispatch_once_t onceToken; \
|
||||
dispatch_once(&onceToken, ^{ \
|
||||
mapping = values; \
|
||||
}); \
|
||||
if (!json) { \
|
||||
return default; \
|
||||
} \
|
||||
if ([json isKindOfClass:[NSNumber class]]) { \
|
||||
if ([[mapping allValues] containsObject:json] || [json getter] == default) { \
|
||||
return [json getter]; \
|
||||
} \
|
||||
RCTLogError(@"Invalid %s '%@'. should be one of: %@", #type, json, [mapping allValues]); \
|
||||
return default; \
|
||||
} \
|
||||
if (![json isKindOfClass:[NSString class]]) { \
|
||||
RCTLogError(@"Expected NSNumber or NSString for %s, received %@: %@", #type, [json class], json); \
|
||||
} \
|
||||
id value = mapping[json]; \
|
||||
if(!value && [json description].length > 0) { \
|
||||
RCTLogError(@"Invalid %s '%@'. should be one of: %@", #type, json, [mapping allKeys]); \
|
||||
} \
|
||||
return value ? [value getter] : default; \
|
||||
}
|
||||
|
||||
#define RCT_STRUCT_CONVERTER(type, values) \
|
||||
+ (type)type:(id)json \
|
||||
{ \
|
||||
@try { \
|
||||
static NSArray *fields; \
|
||||
static NSUInteger count; \
|
||||
static dispatch_once_t onceToken; \
|
||||
dispatch_once(&onceToken, ^{ \
|
||||
fields = values; \
|
||||
count = [fields count]; \
|
||||
}); \
|
||||
type result; \
|
||||
if ([json isKindOfClass:[NSArray class]]) { \
|
||||
if ([json count] != count) { \
|
||||
RCTLogError(@"Expected array with count %zd, but count is %zd: %@", count, [json count], json); \
|
||||
} else { \
|
||||
for (NSUInteger i = 0; i < count; i++) { \
|
||||
((CGFloat *)&result)[i] = [json[i] doubleValue]; \
|
||||
} \
|
||||
} \
|
||||
} else if ([json isKindOfClass:[NSDictionary class]]) { \
|
||||
for (NSUInteger i = 0; i < count; i++) { \
|
||||
((CGFloat *)&result)[i] = [json[fields[i]] doubleValue]; \
|
||||
} \
|
||||
} else if (json) { \
|
||||
RCTLogError(@"Expected NSArray or NSDictionary for %s, received %@: %@", #type, [json class], json); \
|
||||
} \
|
||||
return result; \
|
||||
} \
|
||||
@catch (__unused NSException *e) { \
|
||||
RCTLogError(@"JSON value '%@' cannot be converted to '%s'", json, #type); \
|
||||
type result; \
|
||||
return result; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define RCT_ARRAY_CONVERTER(type) \
|
||||
+ (NSArray *)type##Array:(id)json \
|
||||
{ \
|
||||
NSMutableArray *values = [[NSMutableArray alloc] init]; \
|
||||
for (id jsonValue in [self NSArray:json]) { \
|
||||
id value = [self type:jsonValue]; \
|
||||
if (!value) { \
|
||||
[values addObject:value]; \
|
||||
} \
|
||||
} \
|
||||
return values; \
|
||||
}
|
||||
|
||||
@implementation RCTConvert
|
||||
|
||||
RCT_CONVERTER(BOOL, BOOL, boolValue)
|
||||
|
@ -178,19 +84,31 @@ RCT_ENUM_CONVERTER(UIKeyboardType, (@{
|
|||
}), UIKeyboardTypeDefault, integerValue)
|
||||
|
||||
RCT_CONVERTER(CGFloat, CGFloat, doubleValue)
|
||||
RCT_STRUCT_CONVERTER(CGPoint, (@[@"x", @"y"]))
|
||||
RCT_STRUCT_CONVERTER(CGSize, (@[@"w", @"h"]))
|
||||
RCT_STRUCT_CONVERTER(CGRect, (@[@"x", @"y", @"w", @"h"]))
|
||||
RCT_STRUCT_CONVERTER(UIEdgeInsets, (@[@"top", @"left", @"bottom", @"right"]))
|
||||
RCT_CGSTRUCT_CONVERTER(CGPoint, (@[@"x", @"y"]))
|
||||
RCT_CGSTRUCT_CONVERTER(CGSize, (@[@"w", @"h"]))
|
||||
RCT_CGSTRUCT_CONVERTER(CGRect, (@[@"x", @"y", @"w", @"h"]))
|
||||
RCT_CGSTRUCT_CONVERTER(UIEdgeInsets, (@[@"top", @"left", @"bottom", @"right"]))
|
||||
|
||||
RCT_STRUCT_CONVERTER(CATransform3D, (@[
|
||||
RCT_ENUM_CONVERTER(CGLineJoin, (@{
|
||||
@"miter": @(kCGLineJoinMiter),
|
||||
@"round": @(kCGLineJoinRound),
|
||||
@"bevel": @(kCGLineJoinBevel),
|
||||
}), kCGLineJoinMiter, intValue)
|
||||
|
||||
RCT_ENUM_CONVERTER(CGLineCap, (@{
|
||||
@"butt": @(kCGLineCapButt),
|
||||
@"round": @(kCGLineCapRound),
|
||||
@"square": @(kCGLineCapSquare),
|
||||
}), kCGLineCapButt, intValue)
|
||||
|
||||
RCT_CGSTRUCT_CONVERTER(CATransform3D, (@[
|
||||
@"m11", @"m12", @"m13", @"m14",
|
||||
@"m21", @"m22", @"m23", @"m24",
|
||||
@"m31", @"m32", @"m33", @"m34",
|
||||
@"m41", @"m42", @"m43", @"m44"
|
||||
]))
|
||||
|
||||
RCT_STRUCT_CONVERTER(CGAffineTransform, (@[@"a", @"b", @"c", @"d", @"tx", @"ty"]))
|
||||
RCT_CGSTRUCT_CONVERTER(CGAffineTransform, (@[@"a", @"b", @"c", @"d", @"tx", @"ty"]))
|
||||
|
||||
+ (UIColor *)UIColor:(id)json
|
||||
{
|
||||
|
@ -804,6 +722,12 @@ static id RCTConvertValueWithExplicitEncoding(id target, NSString *key, id json,
|
|||
@"extAlignment": ^(id val) {
|
||||
return [RCTConvert NSTextAlignment:val];
|
||||
},
|
||||
@"Cap": ^(id val) {
|
||||
return [RCTConvert CGLineCap:val];
|
||||
},
|
||||
@"Join": ^(id val) {
|
||||
return [RCTConvert CGLineJoin:val];
|
||||
},
|
||||
@"ointerEvents": ^(id val) {
|
||||
return [RCTConvert RCTPointerEvents:val];
|
||||
},
|
||||
|
|
|
@ -16,7 +16,7 @@ RCT_EXPORT_VIEW_PROPERTY(selected);
|
|||
RCT_EXPORT_VIEW_PROPERTY(icon);
|
||||
RCT_REMAP_VIEW_PROPERTY(selectedIcon, barItem.selectedImage);
|
||||
RCT_REMAP_VIEW_PROPERTY(badgeValue, barItem.badgeValue);
|
||||
RCT_CUSTOM_VIEW_PROPERTY(title, RCTTabBarItem *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(title, RCTTabBarItem)
|
||||
{
|
||||
view.barItem.title = json ? [RCTConvert NSString:json] : defaultView.barItem.title;
|
||||
view.barItem.imageInsets = [view.barItem.title length] ? UIEdgeInsetsZero : (UIEdgeInsets){6, 0, -6, 0};
|
||||
|
|
|
@ -23,15 +23,15 @@ RCT_EXPORT_VIEW_PROPERTY(text)
|
|||
RCT_EXPORT_VIEW_PROPERTY(clearButtonMode)
|
||||
RCT_EXPORT_VIEW_PROPERTY(keyboardType)
|
||||
RCT_REMAP_VIEW_PROPERTY(color, textColor)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontSize, RCTTextField *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontSize, RCTTextField)
|
||||
{
|
||||
view.font = [RCTConvert UIFont:view.font withSize:json ?: @(defaultView.font.pointSize)];
|
||||
}
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontWeight, RCTTextField *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontWeight, RCTTextField)
|
||||
{
|
||||
view.font = [RCTConvert UIFont:view.font withWeight:json]; // TODO
|
||||
}
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontFamily, RCTTextField *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(fontFamily, RCTTextField)
|
||||
{
|
||||
view.font = [RCTConvert UIFont:view.font withFamily:json ?: defaultView.font.familyName];
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
RCT_EXPORT_VIEW_PROPERTY(activityIndicatorViewStyle)
|
||||
RCT_EXPORT_VIEW_PROPERTY(color)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(animating, UIActivityIndicatorView *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(animating, UIActivityIndicatorView)
|
||||
{
|
||||
BOOL animating = json ? [json boolValue] : [defaultView isAnimating];
|
||||
if (animating != [view isAnimating]) {
|
||||
|
|
|
@ -122,11 +122,11 @@ RCT_REMAP_VIEW_PROPERTY(name, name)
|
|||
* view properties. The macro should be followed by a method body, which can
|
||||
* refer to "json", "view" and "defaultView" to implement the required logic.
|
||||
*/
|
||||
#define RCT_CUSTOM_VIEW_PROPERTY(name, viewType) \
|
||||
- (void)set_##name:(id)json forView:(viewType)view withDefaultView:(viewType)defaultView
|
||||
#define RCT_CUSTOM_VIEW_PROPERTY(name, viewClass) \
|
||||
- (void)set_##name:(id)json forView:(viewClass *)view withDefaultView:(viewClass *)defaultView
|
||||
|
||||
#define RCT_CUSTOM_SHADOW_PROPERTY(name, viewType) \
|
||||
- (void)set_##name:(id)json forShadowView:(viewType)view withDefaultView:(viewType)defaultView
|
||||
#define RCT_CUSTOM_SHADOW_PROPERTY(name, viewClass) \
|
||||
- (void)set_##name:(id)json forShadowView:(viewClass *)view withDefaultView:(viewClass *)defaultView
|
||||
|
||||
/**
|
||||
* These are useful in cases where the module's superclass handles a
|
||||
|
|
|
@ -78,11 +78,11 @@ RCT_REMAP_VIEW_PROPERTY(borderColor, layer.borderColor);
|
|||
RCT_REMAP_VIEW_PROPERTY(borderRadius, layer.cornerRadius)
|
||||
RCT_REMAP_VIEW_PROPERTY(borderWidth, layer.borderWidth)
|
||||
RCT_REMAP_VIEW_PROPERTY(transformMatrix, layer.transform)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(overflow, UIView *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(overflow, UIView)
|
||||
{
|
||||
view.clipsToBounds = json ? ![RCTConvert css_overflow:json] : defaultView.clipsToBounds;
|
||||
}
|
||||
RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTView *)
|
||||
RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTView)
|
||||
{
|
||||
if ([view respondsToSelector:@selector(setPointerEvents:)]) {
|
||||
view.pointerEvents = json ? [RCTConvert RCTPointerEvents:json] : defaultView.pointerEvents;
|
||||
|
@ -112,32 +112,32 @@ RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTView *)
|
|||
|
||||
// ShadowView properties
|
||||
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowView)
|
||||
{
|
||||
view.backgroundColor = json ? [RCTConvert UIColor:json] : defaultView.backgroundColor;
|
||||
view.isBGColorExplicitlySet = json ? YES : defaultView.isBGColorExplicitlySet;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(flexDirection, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(flexDirection, RCTShadowView)
|
||||
{
|
||||
view.flexDirection = json? [RCTConvert css_flex_direction_t:json] : defaultView.flexDirection;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(flexWrap, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(flexWrap, RCTShadowView)
|
||||
{
|
||||
view.flexWrap = json ? [RCTConvert css_wrap_type_t:json] : defaultView.flexWrap;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(justifyContent, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(justifyContent, RCTShadowView)
|
||||
{
|
||||
view.justifyContent = json ? [RCTConvert css_justify_t:json] : defaultView.justifyContent;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(alignItems, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(alignItems, RCTShadowView)
|
||||
{
|
||||
view.alignItems = json ? [RCTConvert css_align_t:json] : defaultView.alignItems;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(alignSelf, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(alignSelf, RCTShadowView)
|
||||
{
|
||||
view.alignSelf = json ? [RCTConvert css_align_t:json] : defaultView.alignSelf;
|
||||
}
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(position, RCTShadowView *)
|
||||
RCT_CUSTOM_SHADOW_PROPERTY(position, RCTShadowView)
|
||||
{
|
||||
view.positionType = json ? [RCTConvert css_position_type_t:json] : defaultView.positionType;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue