CATransition custom UIViewController transition animation, uiviewcontroller
CATransition
CATransition is a subclass of CAAnimation. You can set type and subtype to implement simple transition animation.
Type:
/* Common transition types. */CA_EXTERN NSString * const kCATransitionFade __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionMoveIn __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionPush __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionReveal __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
You can also replace @ "fade", @ "moveIn", @ "push", @ "reveal", in addition to the four types: @ "pageCurl ", @ "cube", @ "flip", and so on.
Subtype:
/* Common transition subtypes. */CA_EXTERN NSString * const kCATransitionFromRight __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionFromLeft __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionFromTop __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);CA_EXTERN NSString * const kCATransitionFromBottom __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
You can also directly use the corresponding string: @ "fromRight", @ "fromLeft", @ "fromTop", @ "fromBottom"
Set animated to NO for the Present Type Transition animation, and add the animation to self. view. window. layer.
/*** CATransition ***///CATransition- (CATransition *)transition{ CATransition *transition = [CATransition animation]; transition.duration = 1; transition.type = @"cube"; transition.subtype = @"fromRight"; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; return transition;}- (void)onClick:(id)sender{ ViewController2 *vc2 = [[ViewController2 alloc] init]; [self presentViewController:vc2 animated:NO completion:nil]; [self.view.window.layer addAnimation:[self transition] forKey:@"kTransitionAnimation"];}
Set the animation to NO for the Push type transition animation, and add the animation to self. view. window. layer or self. navigationController. view. layer.
/*** CATransition ***///CATransition- (CATransition *)transition{ CATransition *transition = [CATransition animation]; transition.duration = 1; transition.type = @"cube"; transition.subtype = @"fromRight"; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; return transition;}- (void)onClick:(id)sender{ ViewController2 *vc2 = [[ViewController2 alloc] init]; [self.navigationController pushViewController:vc2 animated:NO]; [self.view.window.layer addAnimation:[self transition] forKey:@"kTransitionAnimation"]; // or [self.navigationController.view.layer addAnimation:[self transition] forKey:kTransitionAnimation];}