【Core Animation】系列之(一) 自定义图层

UIView的一个重要组成就是CALayer, 我们先创建一个自定义图层

//创建一个图层
  CALayer *layer = [CALayer layer];

  //设置大小
  layer.bounds = CGRectMake(0, 0, 60, 60);

  //设置位置
  layer.position = CGPointMake(100, 200);

  //设置背景色
  layer.backgroundColor = [UIColor blueColor].CGColor;

  [self.view.layer addSublayer:layer];

运行结果很简单,一个宽高60、蓝色背景的图层

我们设置下内容试试,插入如下代码

//  layer.contents = (id)[UIImage imageNamed:@"Icon-60"].CGImage;
  layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"Icon-60"].CGImage);

图片结果显示

注意到 代码里面有CGColor,CGImage 这样的格式转换

在设置内容时我用了两种转换方式,contents 类型为id,

CGImage类型是CGImageRef,第一种属于强制转换 ,第二种用__bridge

来桥接,还有CGColor ,为什么需要这种转换?

首先,CALayer是定义在QuartCore框架的[Core Animation]

CGImageRef、CGColorRef两种数据定义在CoreGraphics框架中的

UIColor、UIImage是定义在UIKit框架中的

其次,QuartCore和CoreGraphics框架是跨平台的,支持Mac OS X 、iOS

而UIKit 只能iOS上使用

所以为了保证可移植行QuartCore只能用CGImageRef、CGColorRef等

既然CALayer和UIView能实现相同的显示效果,那么谁比较好?

首先,相比CALayer,UIView增加了事件处理功能,CALayer不能处理用户

的触摸事件,

所以如果显示要与用户交互的话就用UIView,不用的话无所谓,

当然相比UIView,CALayer的性能会高一些

下一篇:02-position-anchorPoint

未完待续

时间: 2024-09-30 15:06:45

【Core Animation】系列之(一) 自定义图层的相关文章

iOS Core Animation Advanced Techniques(一):图层树、寄宿图以及图层几何学

(一)图层的树状结构 巨妖有图层,洋葱也有图层,你有吗?我们都有图层 -- 史莱克 Core Animation其实是一个令人误解的命名.你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来,所以做动画这只是Core Animation特性的冰山一角. Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中.于是这个树形成了UIKit以及在iO

iOS Core Animation Advanced Techniques(五):图层时间和缓冲

图层时间 时间和空间最大的区别在于,时间不能被复用 -- 弗斯特梅里克 在上面两章中,我们探讨了可以用CAAnimation和它的子类实现的多种图层动画.动画的发生是需要持续一段时间的,所以计时对整个概念来说至关重要.在这一章中,我们来看看CAMediaTiming,看看Core Animation是如何跟踪时间的. CAMediaTiming协议 CAMediaTiming协议定义了在一段动画内用来控制逝去时间的属性的集合,CALayer和CAAnimation都实现了这个协议,所以时间可以被

iOS开发-核心动画高级编程Core Animation系列(转)

iOS-Core-Animation-Advanced-Techniques 转 GitHub译文 iOS核心动画高级编程全集 iOS-核心动画高级编程/1-图层树 iOS-核心动画高级编程/2-寄宿图 iOS-核心动画高级编程/3-图层几何学 iOS-核心动画高级编程/4-视觉效果 iOS-核心动画高级编程/5-变换 iOS-核心动画高级编程/6-专有图层 iOS-核心动画高级编程/7-隐式动画 iOS-核心动画高级编程/8-显示动画 iOS-核心动画高级编程/9-图层时间 iOS-核心动画高

Core Animation系列之CADisplayLink

http://blog.csdn.net/wzzvictory/article/details/22417181 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/22417181 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微博.微信公众帐号wangzzstrive来支持我,谢谢! 一直以来都想好好学习下CoreAnimation,奈何涉及的东西太多,想要一次性全部搞定时间上不允许,以后会断断续续的补全.

Core Animation系列之CADisplayLink(转)

转自 http://www.tuicool.com/articles/meMVR3 一直以来都想好好学习下CoreAnimation,奈何涉及的东西太多,想要一次性全部搞定时间上不允许,以后会断断续续的补全.最近项目里用到了CADisplayLink,就顺便花点时间看了看. 一.简介 1.所在框架 CADisplayLink和其它CoreAnimation类一样,都是在QuartzCore.framework里. 2.功能 CADisplayLink最主要的特征是能提供一个周期性的调用我们赋给它

iOS Core Animation Advanced Techniques(七):高效绘图、图像IO以及图层性能

高效绘图不必要的效率考虑往往是性能问题的万恶之源. ——William Allan Wulf 在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Animation性能问题.在构建一个iOS app的时候会遇到很多潜在的性能陷阱,但是在本章我们将着眼于有关绘制的性能问题. 软件绘图 术语绘图通常在Core Animation的上下文中指代软件绘图(意即:不由GPU协助的绘图).在iOS中,软件绘图通常是由Core Graphics框架完成来完成.但是,在一些必要的情况下,

Core Animation编程指南

本文是<Core Animation Programming Guide>2013-01-28更新版本的译文.本文略去了原文中关于OS X平台上Core Animation相关内容.因为原文的类型属于编程指南,所以示例代码并不多,更多的是理论层面的探讨.所以译文中加入了大量的示例代码,以提高本文的可操作性.希望本文能够对你有所帮助. 本文由海水的味道翻译,转载请注明译者和出处,请勿用于商业用途! 关于Core Animation Core Animation是iOS与OS X平台上负责图形渲染

iOS Core Animation Advanced Techniques(二):视觉效果和变换

四)视觉效果 嗯,园和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯 我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图.但是图层不仅仅可以是图片或是颜色的容器:还有一系列内建的特性使得创造美丽优雅的令人深刻的界面元素成为可能.在这一章,我们将会探索一些能够通过使用CALayer属性实现的视觉效果. 圆角 圆角矩形是iOS的一个标志性审美特性.这在iOS的每一个地方都得到了体现,不论是主屏幕图标,还是警告弹框,甚至是文本框.按

(转)iOS动画Core Animation

文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animation负责所有的滚动.旋转.缩小和放大以及所有的iOS动画效果.其中UIKit类通常都有animated:参数部分,它可以允许是否使用动画. Core Animation主要是使用 我们知道每个UIView都关联到一个CALayer对象,CALayer是Core Animation中的图层. Cor