关于在项目中用到的动画效果(浅析)
来源:互联网 发布:淘宝关键词提取工具 编辑:程序博客网 时间:2024/06/14 01:10
改需求的感觉可能是我做程序猿这么久以来最糟糕的感觉了
每个让你改需求的人站你后边指指点点 这会让你觉得没什么尊严:凭什么你让我改我就该
但是 没办法 你还是得改
要说该需求这种事情 如果只有产品要求的话 那问题还不大 毕竟一个人只有一种思想 改改就好
最怕的是
你的老总也爱管这事
比如我们 老总简直就是产品 UI 美工 数据的合体版
所有的问题 甚至数据对不对 也非要插上一脚
有一次 发现城市列表少了城市 让我们该 我擦 这个我们怎么改 后台的问题好嘛
没办法 提给后台
后台说了一句至今难以忘怀的话 :我也不知道 反正代码丢失很严重
你牛
不但数据 界面好不好看也要管
前几天好了点时间做了个动画效果的启动页 他们看着也觉得不错 没想到不如老板法眼
一句改 硬生生的让我的动图变为了四个美女帅哥的图片来代替
没办法 谁让你是老板呢
好吧 今天确实因为这些东西整的心情不好 还是先回归正题吧 下面从简单的开始说吧
1.首先从最简单的地方开始说吧
首先在启动界面使用了旋转图片的方法
//开始旋转
-(void) startAnimationEarth{
CGAffineTransform endAngle =CGAffineTransformMakeRotation(angle * (M_PI /180.0f));
[UIViewanimateWithDuration:0.4delay:0options:UIViewAnimationOptionCurveLinearanimations:^{
imageViewEarth.transform = endAngle;
} completion:^(BOOL finished) {
angle +=10;
if (angle >1000) {
NSLog(@"动画结束!!!");
}else{
[selfstartAnimationEarth];
}
}];
}
原理很简单 就是每隔一定时间增加图片的旋转角度 无限循环 但是需要注意的是页面在消失了也会走 所以需要结束掉循环 所以在角度大于多少做了个判断让他不循环这个角度可是设大点 因为在页面消失的时候不管角度多大 他都会满足这个条件并结束循环的
2.简单的图片旋转
之前做的时候 就是再UIview的动画结束的时候 改变图片 但是后来发现这样太low了 后来加了这行代码
self.upImage.transform =CGAffineTransformMakeRotation(M_PI);(不能写在UIview的finished里面 改变图标方向 但是没有动画效果)
如果转回来的话 需要旋转360度 因为·他的旋转是相当于最初的位置
CGAffineTransform这个方法 包含了图片的旋转 放大 平移 缩放等效果 而且还有多种效果组合的方法 在一些项目中合理使用 会使APP增色不少
3.贝塞尔曲线
贝塞尔曲线是很需要数学功底的 不是因为方法难 而是因为点的位置很难确定
NSIntegerconst Simble_SIZE =60;
UIBezierPath *path = [UIBezierPathbezierPathWithArcCenter:CGPointMake(label.frame.size.width / 2, Simble_SIZE/2)radius:Simble_SIZE/2 -2.5 startAngle:0endAngle:M_PI*2clockwise:YES];
path.lineCapStyle =kCGLineCapRound;
path.lineJoinStyle =kCGLineCapRound;
[path moveToPoint:CGPointMake(label.frame.size.width / 2 - 10,Simble_SIZE/2)];
CGPoint p1 =CGPointMake(label.frame.size.width /2, Simble_SIZE/2+10);
[path addLineToPoint:p1];
CGPoint p2 =CGPointMake(label.frame.size.width /2 + 10,Simble_SIZE/4);
[path addLineToPoint:p2];
CAShapeLayer *layer = [[CAShapeLayeralloc]init];
layer.fillColor = [UIColorclearColor].CGColor;
layer.strokeColor = [UIColorcolorWithRed:0/255.green:161/255.blue:233/255.alpha:1.f].CGColor;
layer.lineWidth =5;
layer.path = path.CGPath;
CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:NSStringFromSelector(@selector(strokeEnd))];
animation.fromValue =@0;
animation.toValue =@1;
animation.duration =0.5;
[layer addAnimation:animationforKey:NSStringFromSelector(@selector(strokeEnd))];
label.layer.backgroundColor = [[UIColorwhiteColor]CGColor];
[label.layeraddSublayer:layer];
就是一个简单的圆圈 加上一个对号的曲线 但是点的位置还是想了好久
原理是通过贝塞尔曲线绘制路线 再通过layer绘制路线 最后就是为其添加动画效果 最后添加在想要显示的控件上
今天就写到这里吧 随时想到 或者学习到的话 会继续添加的
- 关于在项目中用到的动画效果(浅析)
- [iOS]在tableview中用动画效果改变cell的高度
- 在tableview中用动画效果改变cell的高度
- iOS 项目中用到的拖拽界面动画
- ASP.NET 项目中用到的广告效果
- 项目中用到marquee的js效果总结
- 项目中用到的轮播图片效果
- 项目中用到的
- 项目中用到的关于时间段不能重复的解决方法
- 项目中用到的知识(1)
- 收集和在项目中用到的javascript
- 在项目中用到的一些JS代码
- 我在项目中用到的一些工具类
- 关于在环境监控中用到的node.js通讯
- 项目中用到的开源库
- 项目中用到的工具
- 项目中用到的css
- 【笔记】Double类型的加减乘除(项目中在计算价格中用到)
- 图片相关的Utils
- mybatis多表查询操作
- C++ 用libcurl库进行http通讯网络编程
- okhttp的帮助文档
- KVM 使用 virt-install 创建虚拟机失败经历
- 关于在项目中用到的动画效果(浅析)
- 计算机组成原理之指令调度和延迟分支
- 画网络拓扑图好用的工具
- springMVC + mybatis + bootstrap 框架学习
- 【Cubieboard2】配置编译内核支持SPI全双工通信驱动
- 加载图片工具类
- 最长递增子序列
- 误删Linux path中的路径恢复
- JS获取时间戳兼容问题