打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IOS疯狂基础之

IOS中的动画右两大类1.UIView的视图动画2.Layer的动画 UIView的动画也是基于Layer的动画

动画的代码格式都很固定


1.UIView动画 :一般方式

[UIView beginAnimations:@"ddd" context:nil];//设置动画

[UIView commitAnimations]; //提交动画

这两个是必须有的,然后在两句的中间添加动画的代码


[UIView beginAnimations:@"ddd" context:nil];//设置动画 ddd为动画名称

[UIView setAnimationDuration:3];//定义动画持续时间

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //setAnimationCurve来定义动画加速或减速方式

[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES];

//设置动画的样式  forView为哪个view实现这个动画效果

[UIView setAnimationDelay:3]; //设置动画延迟多久执行

[UIView setAnimationDelegate:self]; //设置动画的代理 实现动画执行前后的方法 在commitAnimation之前设置

[UIView setAnimationDidStopSelector:@selector(stop)];//设置动画结束后执行的方法

[UIView setAnimationWillStartSelector:@selector(star)];//设置动画将要开始执行的方法

[UIView commitAnimations]; //提交动画

typedef enum {

    UIViewAnimationTransitionNone,  //普通状态

    UIViewAnimationTransitionFlipFromLeft,  //从左往右翻转

    UIViewAnimationTransitionFlipFromRight,  //从右往左翻转

    UIViewAnimationTransitionCurlUp, //向上翻页

    UIViewAnimationTransitionCurlDown, //向下翻页

} UIViewAnimationTransition;

typedef enum {

    UIViewAnimationCurveEaseInOut,

    UIViewAnimationCurveEaseIn,

    UIViewAnimationCurveEaseOut,

    UIViewAnimationCurveLinear

} UIViewAnimationCurve;


[UIView beginAnimations:@"ddd" context:nil];//设置动画

view.frame = CGRectMake(200, 200, 100, 100);

[UIView commitAnimations]; //提交动画

当view从本来的frame移动到新的frame时会慢慢渐变而不是一下就完成了 中间也可以添加到上面那段中间 只是多种效果重叠


以下这些也可以加到  [UIView beginAnimations:@"ddd" context:nil]; [UIViewcommitAnimations];之间


view.transform = CGAffineTransformMakeTranslation(10,10);//设置偏移量相对于最初的 只能偏移一次

view.transform = CGAffineTransformTranslate(view.transform,10, 10); //设置偏移量偏移多次


self.view.transform = CGAffineTransformMakeRotation(M_PI);//设置旋转度只能旋转一次

self.view.transform = CGAffineTransformRotate(self.view.transform,M_PI); //旋转多次


self.view.transform = CGAffineTransformMakeScale(1.1,1.1); //设置大小只能改变一次 数值时相对于本来的几倍

self.view.transform = CGAffineTransformScale(self.view.transform,1.1, 1.1);//改变多次


self.view.transform = CGAffineTransformIdentity;//回到当初的样子执行一次

self.view.transform = CGAffineTransformInvert(self.view.transform);//得到相反的样子大小 方向位置执行多次


Block方式

[UIView animateWithDuration:3 animations:^(void){

    

    //这里相当于在begin和commint之间

}completion:^(BOOL finished){

    //这里相当于动画执行完成后要执行的方法,可以继续嵌套block

}];


2.CAAnimation

需要添加库,和包含头文件



caanimation有多个子类


CABasicAnimation


CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];

//@""里的字符串有多种,可以自己找相关资料,一定要填对,动画才会执行 opacity设置透明度 bounds.size设置大小

[animation setFromValue:[NSNumber numberWithFloat:1.0]];//设置透明度从几开始

[animation setToValue:[NSNumber numberWithFloat:0.3]];//设置透明度到几结束

[animation setDuration:0.1]; //设置动画时间

[animation setRepeatCount:100000];//设置重复时间

[animation setRepeatDuration:4];  //会限制重复次数

[animation setAutoreverses:NO];//设置是否从1.0到0.3再从0.3到1.0 为一次 如果设置为NO则 1.0到0.3为一次

[animation setRemovedOnCompletion:YES]; //完成时移出动画 默认也是

[view.layer addAnimation:animation forKey:@"abc"];//执行动画


CAKeyframeAnimation


CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];//设置view从初始位置经过一系列点

NSArray *postionAraay = [NSArrayarrayWithObjects:[NSValuevalueWithCGPoint:CGPointMake(100,20)], [NSValuevalueWithCGPoint:CGPointMake(40,80)],[NSValuevalueWithCGPoint:CGPointMake(30,60)],[NSValuevalueWithCGPoint:CGPointMake(20,40)],[NSValuevalueWithCGPoint:CGPointMake(0,100)],nil];//设置点


NSArray *times = [NSArrayarrayWithObjects:[NSNumbernumberWithFloat:0.3],[NSNumbernumberWithFloat:0.5],[NSNumbernumberWithFloat:0.6],[NSNumbernumberWithFloat:0.1],[NSNumbernumberWithFloat:1.0],nil];  //设置移动过程的时间


[animation setKeyTimes:times];

[animation setValues:postionAraay];

[animation setDuration:5]; //设置动画时间

[bigImage.layer addAnimation:animation forKey:@"dd"];//执行动画


CATransition


CATransition *animation = [CATransition animation];

animation.duration = 0.5f;

animation.timingFunction = UIViewAnimationCurveEaseInOut;

animation.fillMode = kCAFillModeForwards;

/*

 kCATransitionFade;

 kCATransitionMoveIn;

 kCATransitionPush;

 kCATransitionReveal;

 */

/*

 kCATransitionFromRight;

 kCATransitionFromLeft;

 kCATransitionFromTop;

 kCATransitionFromBottom;

 */

animation.type = kCATransitionPush;

animation.subtype = kCATransitionFromBottom;

[view.layer addAnimation:animation forKey:animation];

type也可以直接用字符串

/*

 cube

 suckEffect 卷走

 oglFlip    翻转

 rippleEffect  水波

 pageCurl   翻页

 pageUnCurl

 cameraIrisHollowOpen

 cameraIrisHollowClose

 */


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iOS开发动画(Animation)图片360度不停旋转
iPhone开发中动画
ios各种动画效果
iOS开发中常用的各种动画、页面切面效果
iPhone开发之启动画面及动画
卡片式弹出窗口
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服