第一种:改变大小位置:
从iOS4.0以后,apple又提供了5个方法:
[plain] view plaincopy
- + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
- + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0
- + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0, completion = NULL
- + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
- + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // toView added to fromView.superview, fromView removed from its superview
例如:改变大小位置(同一个页面的动画,一般用于首页登录,取消登录页面)
[plain] view plaincopy
- [UIView animateWithDuration:0.6 animations:^{
- self.currentView.frame = CGRectMake(30, 30, 200, 300);
- }];
或者翻转切换视图(从一个页面跳转到另一个页面,从一个viewcontroller跳到另一个viewcontroller)
[plain] view plaincopy
- [UIView transitionFromView:self.mapviewContainer toView:self.listContainer duration:0.75 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished){
- }];
第二种:使用CATransition(个人感觉还没有第一种好用)
[plain] view plaincopy
- CATransition *transition = [CATransition animation];
- transition.duration = 0.4;
- transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
- transition.type = kCATransitionPush;
- transition.subtype = kCATransitionFromRight;
- [fromView.layer addAnimation:transition forKey:nil];
CATransition动画分为4种,
1、kCATransitionFade;
2、kCATransitionPush;
3、kCATransitionReveal;
4、kCATransitionMoveIn;
后三种又可以选择4个方向,kCATransitionFromLeft、kCATransitionFromBottom、kCATransitionFromRight、kCATransitionFromTop
就是上图的第2排4个按钮展现的动画
第三种:使用UIViewAnimationTransition(没学会)
[html] view plaincopy
- [UIView beginAnimations:@"animation" context:nil];
- [UIView setAnimationDuration:0.6f];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
- [UIView setAnimationDelegate:self];
- [UIView setAnimationDidStopSelector:@selector(animationDidStop)];
- [UIView setAnimationRepeatAutoreverses:NO];
- [self.view addSubview:self.currentView];
- [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:YES];
- [UIView commitAnimations];
UIViewAnimationTransition动画主要分为两种,
一种是掀开动画(就像翻日历),分别是 UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown .
另一种是翻转动画(一般地图和列表切换会使用这种),分别是UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown .
就是上图的第一排4个按钮展现的动画