- December 17, 2024
- Mins Read
Custom transition between viewcontrollers holding tableviews. Each cell is animated to simulate a ‘wave effect’.
Read more about transitions here and UIKit Dynamics here
pod 'AMWaveTransition'
to your Podfilepod install
open App.xcworkspace
github “andreamazz/AMWaveTransition”
AMWaveViewController
and override visibleCells
or follow these steps:Implement UINavigationControllerDelegate
and this delegate method:
– (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC {
if (operation != UINavigationControllerOperationNone) {
// Return your preferred transition operation
return [AMWaveTransition transitionWithOperation:operation];
}
return nil;
}
Remember to set your instance as the navigation delegate:
– (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController setDelegate:self];
}
– (void)dealloc {
[self.navigationController setDelegate:nil];
}
Implement th AMWaveTransitioning
protocol by returning your tableview’s visible cells:
– (NSArray*)visibleCells {
return [self.tableView visibleCells];
}
To implement the interactive gesture create a new property in your view controller:
@property (strong, nonatomic) IBOutlet AMWaveTransition *interactive;
initialize it in your viewDidLoad
:
self.interactive = [[AMWaveTransition alloc] init];
Attach the gesture recognizer in your viewDidAppear:
and detach it in the viewDidDisappear:
:
– (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.interactive attachInteractiveGestureToNavigationController:self.navigationController];
}
– (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.interactive detachInteractiveGesture];
}
If the view controller you are transitioning to has no table view, don’t implement visibleCells
, the library will handle the transition correctly.
As you can see in the sample project, the best results are obtained by setting the view and the cells’ background to clearColor
, and setting a background color or a background image to the navigation controller.
A vertical stackview which takes subviews with different widths and adds them to it's rows with paddings, spacings etc.
AudioManager is a Swift package that provides a modular and easy-to-use interface for implementing audio feedback in your applications. It ...