Created
March 18, 2013 02:20
-
-
Save helloworld116/5184556 to your computer and use it in GitHub Desktop.
ios:常用16种动画切换核心代码
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // AnimationViewController.m | |
| // StudyiOS | |
| // | |
| // Created by ZhangYiCheng on 11-9-28. | |
| // Copyright 2011 ZhangYiCheng. All rights reserved. | |
| // | |
| #import "AnimationViewController.h" | |
| #import <QuartzCore/QuartzCore.h> | |
| #define kDuration 0.7 // 动画持续时间(秒) | |
| @implementation AnimationViewController | |
| @synthesize blueView; | |
| @synthesize greenView; | |
| @synthesize typeID; | |
| #pragma mark Load | |
| - (void)viewDidLoad { | |
| [super viewDidLoad]; | |
| } | |
| - (void)viewWillAppear:(BOOL)animated { | |
| [self.navigationController setNavigationBarHidden:NO animated:YES]; | |
| [super viewWillAppear:animated]; | |
| } | |
| //- (void)animationStarted:(id)sender { | |
| // | |
| //} | |
| //- (void)animationFinished:(id)sender { | |
| // | |
| //} | |
| #pragma mark Core Animation | |
| - (IBAction)buttonPressed1:(id)sender { | |
| UIButton *button = (UIButton *)sender; | |
| NSInteger tag = button.tag; | |
| CATransition *animation = [CATransition animation]; | |
| animation.delegate = self; | |
| animation.duration = kDuration; | |
| animation.timingFunction = UIViewAnimationCurveEaseInOut; | |
| switch (tag) { | |
| case 101: | |
| animation.type = kCATransitionFade; | |
| break; | |
| case 102: | |
| animation.type = kCATransitionPush; | |
| break; | |
| case 103: | |
| animation.type = kCATransitionReveal; | |
| break; | |
| case 104: | |
| animation.type = kCATransitionMoveIn; | |
| break; | |
| case 201: | |
| animation.type = @"cube"; | |
| break; | |
| case 202: | |
| animation.type = @"suckEffect"; | |
| break; | |
| case 203: | |
| animation.type = @"oglFlip"; | |
| break; | |
| case 204: | |
| animation.type = @"rippleEffect"; | |
| break; | |
| case 205: | |
| animation.type = @"pageCurl"; | |
| break; | |
| case 206: | |
| animation.type = @"pageUnCurl"; | |
| break; | |
| case 207: | |
| animation.type = @"cameraIrisHollowOpen"; | |
| break; | |
| case 208: | |
| animation.type = @"cameraIrisHollowClose"; | |
| break; | |
| default: | |
| break; | |
| } | |
| switch (self.typeID) { | |
| case 0: | |
| animation.subtype = kCATransitionFromLeft; | |
| break; | |
| case 1: | |
| animation.subtype = kCATransitionFromBottom; | |
| break; | |
| case 2: | |
| animation.subtype = kCATransitionFromRight; | |
| break; | |
| case 3: | |
| animation.subtype = kCATransitionFromTop; | |
| break; | |
| default: | |
| break; | |
| } | |
| self.typeID += 1; | |
| if (self.typeID > 3) { | |
| self.typeID = 0; | |
| } | |
| NSUInteger green = [[self.view subviews] indexOfObject:self.greenView]; | |
| NSUInteger blue = [[self.view subviews] indexOfObject:self.blueView]; | |
| [self.view exchangeSubviewAtIndex:green withSubviewAtIndex:blue]; | |
| [[self.view layer] addAnimation:animation forKey:@"animation"]; | |
| } | |
| #pragma mark UIView动画 | |
| - (IBAction)buttonPressed2:(id)sender { | |
| UIButton *button = (UIButton *)sender; | |
| NSInteger tag = button.tag; | |
| CGContextRef context = UIGraphicsGetCurrentContext(); | |
| [UIView beginAnimations:nil context:context]; | |
| [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; | |
| [UIView setAnimationDuration:kDuration]; | |
| switch (tag) { | |
| case 105: | |
| [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES]; | |
| break; | |
| case 106: | |
| [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; | |
| break; | |
| case 107: | |
| [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; | |
| break; | |
| case 108: | |
| [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; | |
| break; | |
| default: | |
| break; | |
| } | |
| NSUInteger green = [[self.view subviews] indexOfObject:self.greenView]; | |
| NSUInteger blue = [[self.view subviews] indexOfObject:self.blueView]; | |
| [self.view exchangeSubviewAtIndex:green withSubviewAtIndex:blue]; | |
| [UIView setAnimationDelegate:self]; | |
| // 动画完毕后调用某个方法 | |
| //[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; | |
| [UIView commitAnimations]; | |
| } | |
| #pragma mark End | |
| - (void)didReceiveMemoryWarning { | |
| // Releases the view if it doesn't have a superview. | |
| [super didReceiveMemoryWarning]; | |
| // Release any cached data, images, etc. that aren't in use. | |
| } | |
| - (void)viewDidUnload { | |
| self.blueView = nil; | |
| self.greenView = nil; | |
| [super viewDidUnload]; | |
| } | |
| - (void)dealloc { | |
| [blueView release]; | |
| [greenView release]; | |
| [super dealloc]; | |
| } | |
| @end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment