重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一直对iOS动画很感兴趣 今天起就和大家一起分享我的学习之路
巫山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
首先 我们想要的效果如下
首先 我们需要自定义一个继承于UIView的视图空间 并在drawReact方法里自定义画图
- (void)drawRect:(CGRect)rect {
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(self.frame.size.width, 0)];
[path addLineToPoint:CGPointMake(self.frame.size.width, self.frame.size.height)];
[path addQuadCurveToPoint:CGPointMake(0, self.frame.size.height) controlPoint:CGPointMake(self.frame.size.width / 2, self.frame.size.height - 200)];
[path closePath];
// // 一个不透明类型的Quartz 2D绘画环境, 相当于一个画布 你可以在上面任意绘制
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddPath(context, path.CGPath);
[_curColor set];
CGContextFillPath(context);
}
第一步:编程入门课
时间预计:4个星期
推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。
如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)
计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。
目标:
1. 让自己对编程这件事感到适应。
写hello world。
怎么写function, 怎么调用function。
全局变量,局部变量这类基本知识点。
都是基本的东西。看看书,写多两个程序就欧啦。
2. 掌握编程语言的基本要素。
编程语言4个要素:
a. 基本的数据类型:整数,实数,character, string, boolean
b. 基本的运算符号:+-×/++--那啥的
c. 怎样输入输出
d. 怎样控制程序:sequence,selection,loop
3. 了解编程范式
面对过程编程。
面向对象编程。
第二步:上手iOS!
时间预计:2星期
强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes U上会开始教iOS 7了。网易公开课的是2010年iOS 5版的,前10堂课,也行。(iTunes U上有完整的课)
CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。
感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!
第三步:开发app!
时间预计:2星期(本人...1个半月,实在不好意思说出口)
这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS SDK都有什么组件,每个组件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。
好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!
基于原则:
一、准确展示:视频Demo
二、操作体验:交互原型
基于这两点,第一个选择是Flash。
由于Apple的原因,Flash如今的境况可算是江河日下。但作为一个动效原型工具,它却有一些独特的优势。
优势1:可以直接导入AE生成的序列帧素材。
优势2:可以导出.apk或.ipa的安装包,共享给任何有手机的人。
三、协助开发:参数文档
根据实现原理,把对应的参数精确的写出来,这就是参数文档。对于动效来说,基本参数无非这三类:
1、动画的起始时间、持续时间(duration\ offset)
2、变化的属性(rotation\ position\ scale\ alpha)
3、运动速率(interpolator)
总结:
简单的说,要想准确传达设计可以分三步。
第一步:要快速可视化。
第二步:最大限度的还原使用场景。
第三步:把设计参数化,尽可能减少让工程师凭感觉开发的情况。
ios核心动画有6种:CABasicAnimation ,CAKeyframeAnimation ,CATransition ,CASpringAnimation ,CAAnimationGroup ,CATransaction。
复杂的动画需要以上一种或几种方式相互组合一下才能实现。
简单的ui动画,就用系统 写好的UIView的动画就可以了。
备注:你问题描述过于简单,我只能从原理上说一下。有问题可以追问
使用CABAsicAnimation来实现动画的放缩和旋转是比较常用的,这篇主要介绍CABasicAnimation实现简单的动画效果
最终的效果图为:
Demo地址
对应的实现文件是SecondViewController
首先,我们先定义一个UIView以及三个button按钮,分别对应平移、放大和旋转
在.h文件中定义相应的属性
之后,在.m文件中实现相应的懒加载
将UIView以及button添加到界面上
之后,我们先来实现平移动画,实现下面的方法
这里面遇到挺多坑的,下面逐条说明一下
接下俩,我们类似添加相应的放大和旋转的动画效果
这样,我们就完成了CABasicAnimation实现平移、放大和旋转的动画效果
这种动画效果使用挺多的
另外,我们阅读苹果开发文档时,我们可以看到协议CAAnimationDelegate,通过这个协议我们可以观察动画的开始和结束。
在平移动画中,让CABasicAnimation遵守这个协议
实现相应的协议方法
比较重要的是,我们通过协议方法可以判断动画是否正常完成还是被打断,这个我以前就碰到过动画过程被UITableView 的reloadData打断,导致动画表现异常,具体可以看下这篇文章
CAnimationGroup动画执行时间比duration小
)
最终效果图为:
Demo地址
我写的同一系列的其他文章
iOS开发中动画效果的探究(一)
iOS动画效果的探究二:UIView Animation实现动画
iOS动画效果三:CABAsicAnimation实现平移、旋转和放大
ios动画效果四:使用Pop框架实现弹簧效果
iOS动画效果五:CABasicAnimation实现绕定点旋转的效果 ]
iOS动画效果六:实现自定义的push转场动画
iOS动画效果七:实现自定义present转场动画效果
iOS动画效果八:实现类似系统的测滑返回效果