码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——动画OC篇&知识点总结

时间:2015-08-08 22:45:40      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

图层与动画知识点总结

 

1.Core Animation

 

  非娱乐类的软件都会用到的动画,操作简单。

 

2.Quartz 2D绘图

 

   是一个2D绘图引擎。

 

  •   (1) 绘图Context是一个绘图的目标对象,定义了绘图的基本属性,如颜色、绘图范围、线宽及样式等。

 

  •    (2)通过UIView会创建Context,可以用类似如下的语句来得到当前的Context.

 

   CGContextRef currentContext = UIGraphicsGetCurrentContext();

 

  •    (3)如果在对其进行修改前想要保存当前状态,可以使用UIGraphicsPushContext;

 

         要恢复保存过的Context,则可用UIGraphicsPopContext。

 

  •    (4)path,路径其实就是用一系列坐标点标识出来的一条曲线或折线,创建好之后就可以沿其画线,或者对封闭的空间进行填充。 

 

3.OpenGL ES编程

 

  一般是三个步骤:

 

  • (1)在Context中绘图

 

  • (2)把Context中的内容送入framebuffer

 

  • (3)显示framebuffer 

 

4.Metal(底层API)

苹果最新推出的Metal框架支持GPU硬件加速、高级3D图形渲染以及大数据并行运算。且提供了先进而精简的API来确保框架的细粒度(fine-grain),并且在组织架构、程序处理、图形呈现、运算指令以及指令相关数据资源的管理上都支持底层控制。其核心目的是尽可能的减少CPU开销,而将运行时产生的大部分负载交由GPU承担。   ——Metal编程指南

 

 

 

下面是一些关于开发遇到的技术问题总结

/**************************************************************************************************************/

复制:根据对应的属性复制一个图层

 

 1     CAReplicatorLayer *re = [CAReplicatorLayer layer];
 2 
 3     re.frame = self.drawView.bounds;
 4 
 5     
 6 
 7     re.instanceCount = 5;
 8 
 9     re.instanceTransform = CATransform3DMakeTranslation(60, 0, 0);
10 
11     
12 
13     re.instanceDelay = 0.5;
14 
15     
16 
17 //    re.instanceColor = [UIColor colorWithWhite:1 alpha:0.2].CGColor;
18 
19     
20 
21     [self.drawView.layer addSublayer:re];

 

渐变:使一个View中颜色布局渐变分配

    

 1     CAGradientLayer *gra = [CAGradientLayer layer];
 2 
 3     _gra = gra;
 4 
 5     gra.frame = _imgBottom.bounds;
 6 
 7     
 8 
 9     gra.startPoint = CGPointMake(0, 0);
10 
11     gra.endPoint = CGPointMake(0, 1);
12 
13     
14 
15     gra.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor grayColor].CGColor];
16 
17     
18 
19     gra.opacity = 0;
20 
21     
22 
23     [_imgBottom.layer addSublayer:gra];
24 
25     

 

    

截图:截取屏幕区域作为图片保存

 

 1 /**
 2 
 3  *  产生截图
 4 
 5  */
 6 
 7 - (void)createScreenShot
 8 
 9 {
10 
11     UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, 0.0);
12 
13     [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
14 
15     UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
16 
17     [self.images addObject:image];
18 
19 }
20 
21  

 

快速合并两张图片;

 1     /**
 2 
 3      *  先设置两张图片,并且将空间的宽度和图片的宽度相等,高度等于图片的一半,使用下面的方法实现两张图片的快速合并
 4 
 5      */
 6 
 7     
 8 
 9     //设置内容的范围
10 
11     _imgTop.layer.contentsRect = CGRectMake(0, 0, 1, 0.5);
12 
13     _imgBottom.layer.contentsRect = CGRectMake(0, 0.5, 1, 0.5);
14 
15     
16 
17     //设置锚点使得移动
18 
19     _imgTop.layer.anchorPoint = CGPointMake(0.5, 1);
20 
21     _imgBottom.layer.anchorPoint = CGPointMake(0.5, 0);
22 
23  
24 
25  

 

立体感:远小近大的效果

 

 1     CATransform3D trans = CATransform3DIdentity;
 2 
 3     
 4 
 5     CGFloat d = 100;
 6 
 7     
 8 
 9     trans.m34 = -1 / d;
10 
11     
12 
13     
14 
15     trans = CATransform3DMakeRotation(-angle, 1, 0, 0);
16 
17     
18 
19     self.imgTop.layer.transform = trans;
20 
21     

 

iOS开发——动画OC篇&知识点总结

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4713918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!