Skip to content

Commit

Permalink
fix(ios): fixed transition hickup when using borderWidth
Browse files Browse the repository at this point in the history
  • Loading branch information
IjzerenHein committed Jan 7, 2020
1 parent f9d81c9 commit ca0628c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
3 changes: 2 additions & 1 deletion ios/RNSharedElementContent.h
Expand Up @@ -12,8 +12,9 @@
@interface RNSharedElementContent : NSObject
@property (nonatomic, assign) id data;
@property (nonatomic, assign) RNSharedElementContentType type;
@property (nonatomic, assign) UIEdgeInsets insets;

- (instancetype)initWithData:(id) data type:(RNSharedElementContentType)type;
- (instancetype)initWithData:(id) data type:(RNSharedElementContentType)type insets:(UIEdgeInsets)insets;
- (NSString*) typeName;

+ (BOOL) isKindOfImageView:(UIView*) view;
Expand Down
5 changes: 4 additions & 1 deletion ios/RNSharedElementContent.m
Expand Up @@ -10,10 +10,11 @@ @implementation RNSharedElementContent
// nop
}

- (instancetype)initWithData:(id) data type:(RNSharedElementContentType)type
- (instancetype)initWithData:(id) data type:(RNSharedElementContentType)type insets:(UIEdgeInsets)insets
{
_data = data;
_type = type;
_insets = insets;
return self;
}

Expand Down Expand Up @@ -64,6 +65,8 @@ + (CGRect) layoutForRect:(CGRect)layout content:(RNSharedElementContent*) conten
if (content == nil || content.data == nil) return layout;
if (content.type != RNSharedElementContentTypeRawImage) return layout;
CGSize size = layout.size;
size.width -= (content.insets.left + content.insets.right);
size.height -= (content.insets.top + content.insets.bottom);
CGSize contentSize = [RNSharedElementContent sizeForRect:layout content:content];
CGFloat contentAspectRatio = (contentSize.width / contentSize.height);
BOOL lo = (size.width / size.height) < contentAspectRatio;
Expand Down
14 changes: 11 additions & 3 deletions ios/RNSharedElementNode.m
Expand Up @@ -263,6 +263,7 @@ - (void) updateContent
if (_contentRequests == nil) return;

CGRect bounds = view.bounds;
CGRect frame = contentView.frame;
if (!bounds.size.width || !bounds.size.height) {
return;
}
Expand All @@ -272,14 +273,21 @@ - (void) updateContent
if ([RNSharedElementContent isKindOfImageView:contentView]) {
UIImageView* imageView = [RNSharedElementContent imageViewFromView:contentView];
UIImage* image = imageView.image;
content = [[RNSharedElementContent alloc]initWithData:image type:RNSharedElementContentTypeRawImage];
UIEdgeInsets imageInsets = UIEdgeInsetsZero;
if (contentView != view) {
imageInsets.left = frame.origin.x;
imageInsets.top = frame.origin.y;
imageInsets.right = bounds.size.width - frame.size.width - frame.origin.x;
imageInsets.bottom = bounds.size.height - frame.size.height - frame.origin.y;
}
content = [[RNSharedElementContent alloc]initWithData:image type:RNSharedElementContentTypeRawImage insets:imageInsets];
}
else if ([NSStringFromClass(view.class) isEqualToString:@"RCTView"] && !view.subviews.count) {
content = [[RNSharedElementContent alloc]initWithData:[[UIView alloc]init] type:RNSharedElementContentTypeSnapshotView];
content = [[RNSharedElementContent alloc]initWithData:[[UIView alloc]init] type:RNSharedElementContentTypeSnapshotView insets:UIEdgeInsetsZero];
}
else {
UIView* snapshotView = [view snapshotViewAfterScreenUpdates:NO];
content = [[RNSharedElementContent alloc]initWithData:snapshotView type:RNSharedElementContentTypeSnapshotView];
content = [[RNSharedElementContent alloc]initWithData:snapshotView type:RNSharedElementContentTypeSnapshotView insets:UIEdgeInsetsZero];
}
/*else {
NSLog(@"drawViewHierarchyInRect: bounds: %@", NSStringFromCGRect(bounds));
Expand Down

0 comments on commit ca0628c

Please sign in to comment.