总结:
核心动画最重要的是图层(layers),UIView是对layers的封装,只不过UIView是有用户交互的,layers是没有响应链的。layers的作用是管理bitmap的一些状态信息,比如上面加一个图片,它会把图片缓存成bitmap的格式,便于在动画时的硬件加速渲染等操作。在app的主layers中,layers只是一个model object,负责管理要显示的对象比如你添加上去的图片。这会影响最终显示效果。layer-based绘图是硬件加速渲染bitmap的效果,view-based则会触发drawRect:函数,该函数是通过CPU在主线程中执行的,两者差别很大。layers中有两套坐标系统,Point-based coordinates(点坐标)就是我们普通的指定起始点等的时候用的;还有一种叫做Unit coordinates(单元坐标),这个是基于锚点说的,取值范围(0-1.0)。在旋转、缩放等操作中,都是相对于anchorPoint进行的。默认情况下anchorPoint为(0.5,0.5)旋转时是绕着layer中心旋转,如果将anchorPoint改为(0,0)则将围绕layer左上角旋转。每一个layers object都含有模型层、展示层、渲染层。总的来说,layers是UIView的基础,在特定的时候我们可能要用到layers,更多的是UIView。