Skip to content

Commit

Permalink
[native-stack] Add flip transition on iOS (#225)
Browse files Browse the repository at this point in the history
  • Loading branch information
janicduplessis authored and osdnk committed Nov 20, 2019
1 parent 58d1791 commit 0a2336d
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ A callback that gets called when the current screen is dismissed by hardware bac
Allows for the customization of how the given screen should appear/dissapear when pushed or popped at the top of the stack. The followin values are currently supported:
- `"default"` – uses a platform default animation
- `"fade"` – fades screen in or out
- `"flip"` – flips the screen, requires `stackPresentation: "modal"` (iOS only)
- `"none"` – the screen appears/dissapears without an animation

#### `stackPresentation`
Expand Down
1 change: 1 addition & 0 deletions ios/RNSScreen.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ typedef NS_ENUM(NSInteger, RNSScreenStackAnimation) {
RNSScreenStackAnimationDefault,
RNSScreenStackAnimationNone,
RNSScreenStackAnimationFade,
RNSScreenStackAnimationFlip,
};

@interface RCTConvert (RNSScreen)
Expand Down
7 changes: 6 additions & 1 deletion ios/RNSScreen.m
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ - (void)setStackAnimation:(RNSScreenStackAnimation)stackAnimation
case RNSScreenStackAnimationFade:
_controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
break;
case RNSScreenStackAnimationFlip:
_controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
break;
case RNSScreenStackAnimationNone:
case RNSScreenStackAnimationDefault:
// Default
Expand Down Expand Up @@ -275,8 +278,10 @@ @implementation RCTConvert (RNSScreen)
RCT_ENUM_CONVERTER(RNSScreenStackAnimation, (@{
@"default": @(RNSScreenStackAnimationDefault),
@"none": @(RNSScreenStackAnimationNone),
@"fade": @(RNSScreenStackAnimationFade)
@"fade": @(RNSScreenStackAnimationFade),
@"flip": @(RNSScreenStackAnimationFlip),
}), RNSScreenStackAnimationDefault, integerValue)


@end

2 changes: 1 addition & 1 deletion ios/RNSScreenStack.m
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ - (void)navigationController:(UINavigationController *)navigationController didS
} else if (operation == UINavigationControllerOperationPop) {
screen = (RNSScreenView *) fromVC.view;
}
if (screen != nil && screen.stackAnimation != RNSScreenStackAnimationDefault) {
if (screen != nil && (screen.stackAnimation == RNSScreenStackAnimationFade || screen.stackAnimation == RNSScreenStackAnimationNone)) {
return [[RNSScreenStackAnimator alloc] initWithOperation:operation];
}
return nil;
Expand Down

0 comments on commit 0a2336d

Please sign in to comment.