iphone中各种动画效果
各种动画效果最普通动画:2011-03-09 19:47
最普通动画:
//开始动画
[UIView beginAnimations:nil context:nil]; ?
//设定动画持续时间
[UIView setAnimationDuration:2];
//动画的内容
frame.origin.x += 150;
[img setFrame:frame];
//动画结束
[UIView commitAnimations];
?
连续动画:一个接一个地显示一系列的图像
NSArray *myImages = [NSArray arrayWithObjects:?
[UIImage imageNamed:@"myImage1.png"],?
[UIImage imageNamed:@"myImage2.png"],?
[UIImage imageNamed:@"myImage3.png"],?
[UIImage imageNamed:@"myImage4.gif"], nil];
?
UIImageView *myAnimatedView = [UIImageView alloc];?
[myAnimatedView initWithFrame:[self bounds]];?
myAnimatedView.animationImages = myImages; //animationImages属性返回一个存放动画图片的数组
myAnimatedView.animationDuration = 0.25; //浏览整个图片一次所用的时间
myAnimatedView.animationRepeatCount = 0; // 0 = loops forever?动画重复次数
[myAnimatedView startAnimating];?
[self addSubview:myAnimatedView];?
[myAnimatedView release];?
?
CATransition Public API动画:
CATransition?*animation = [CATransition?animation];
//动画时间
? ? animation.duration?=?0.5f;
//先慢后快
? ? animation.timingFunction?=?UIViewAnimationCurveEaseInOut;
?animation.fillMode?=?kCAFillModeForwards;
?//animation.removedOnCompletion = NO;
?
//各种动画效果
?/*
kCATransitionFade;
kCATransitionMoveIn;
kCATransitionPush;z
kCATransitionReveal;
*/
?/*
kCATransitionFromRight;
kCATransitionFromLeft;
kCATransitionFromTop;
kCATransitionFromBottom;
*/
//各种组合
animation.type?=?kCATransitionPush;
animation.subtype?=?kCATransitionFromRight;?
?
[self.view.layer?addAnimation:animation?forKey:@"animation"];
?
CATransition Private API动画:
animation.type可以设定为以下效果
动画效果汇总:
/*
?suckEffect(三角)
?
?rippleEffect(水波抖动)
?
?pageCurl(上翻页)
?
?pageUnCurl(下翻页)
?
?oglFlip(上下翻转)
?
?cameraIris/cameraIrisHollowOpen/cameraIrisHollowClose??(镜头快门,这一组动画是有效果,只是很难看,不建议使用
?
?而以下为则黑名单:
?
?spewEffect:?新版面在屏幕下方中间位置被释放出来覆盖旧版面.
?
?- genieEffect:?旧版面在屏幕左下方或右下方被吸走,?显示出下面的新版面?(阿拉丁灯神?).
?
?- unGenieEffect:?新版面在屏幕左下方或右下方被释放出来覆盖旧版面.
?
?- twist:?版面以水平方向像龙卷风式转出来.
?
?- tubey:?版面垂直附有弹性的转出来.
?
?- swirl:?旧版面360度旋转并淡出,?显示出新版面.
?
?- charminUltra:?旧版面淡出并显示新版面.
?
?- zoomyIn:?新版面由小放大走到前面,?旧版面放大由前面消失.
?
?- zoomyOut:?新版面屏幕外面缩放出现,?旧版面缩小消失.
?
?- oglApplicationSuspend:?像按"home"?按钮的效果.
?*/
?
UIView Animations 动画:
[UIView?beginAnimations:@"animationID"?context:nil];
[UIView?setAnimationDuration:0.5f];
[UIView?setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView?setAnimationRepeatAutoreverses:NO];
//以下四种效果
/*
[UIView?setAnimationTransition:UIViewAnimationTransitionFlipFromLeft?forView:self.view?cache:YES];//oglFlip, fromLeft?
[UIView?setAnimationTransition:UIViewAnimationTransitionFlipFromRight?forView:self.view?cache:YES];//oglFlip, fromRight ?
[UIView?setAnimationTransition:UIViewAnimationTransitionCurlUp?forView:self.view?cache:YES];
[UIView?setAnimationTransition:UIViewAnimationTransitionCurlDown?forView:self.view?cache:YES];
*/
?
[self.view?exchangeSubviewAtIndex:1?withSubviewAtIndex:0];
[UIView?commitAnimations];
IOS4.0新方法:
方法:?+(void)animateWithDuration:(NSTimeInterval)duration?animations:(void (^)(void))animations;
+ (void)animateWithDuration:(NSTimeInterval)duration?animations:(void (^)(void))animations?completion:(void (^)(BOOL finished))completion; //多一个动画结束后可以执行的操作.
//下边是嵌套使用,先变大再消失的动画效果.
[UIView?animateWithDuration:1.25?animations:^{
?CGAffineTransform?newTransform =?CGAffineTransformMakeScale(1.2,?1.2);
[firstImageView?setTransform:newTransform];
[secondImageView?setTransform:newTransform];}?
completion:^(BOOL?finished){
[UIView?animateWithDuration:1.2?animations:^{
[firstImageView?setAlpha:0];
[secondImageView?setAlpha:0];}?completion:^(BOOL?finished){?
[firstImageView?removeFromSuperview];?
[secondImageView?removeFromSuperview]; }];?
}];