iOS 核心动画(1)之基本概念

图层和视图

一、UIView
    iOS中所有的视图都从一个UIView的基类派生出来的。UIView可以处理触摸事件(事件:触摸事件、远程控制事件、运动事件),可以支持Core Graphics绘图,可以做仿射变换(旋转、缩放、移动)。
二、CALayer
    CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。
三、联系和区别
    1.UIView比CALayer多了用户响应事件,即CALayer更加轻量级。
    2.UIView和CALayer是相互依赖的。UIView依赖于与CALayer提供的内容;CALayer依赖UIView提供的容器来显示绘制的内容。
    3.UIView来自CALayer,高于CALayer(能响应触摸事件),是CALayer高层实现与封装。
    4.CALayer拥有一些UIView没有的功能,比如阴影、圆角、3D变换等。

图层功能

一、寄宿图
    contents:设置图层的显示内容。属性的类型为id,但你真正要赋值的类型应该是CGImageRef,一个指向CGImage结构的指针。UIImage的CGImage属性便是返回CGImageRef类型,但其是一个Core Foundation类型而不是Cocoa对象。要做下面的处理:

contents.jpg

    contentGravity:设置内容的对齐方式,与UIImageView的contentMode功能相似,这里不做复述。
    contentsScale:定义了内容的像素尺寸和视图大小的比例,默认是1.0。该属性是为支持高分辨率屏幕机制。当值为3.0时,表示屏幕一个点需要用三个像素去显示。

iOS 核心动画(1)之基本概念_第1张图片
contentsScale.jpg

    maskToBounds:默认值是false,表示子图层超出父图层大小的部分依旧正常显示。反之则表示超出父图层部分不被显示。

iOS 核心动画(1)之基本概念_第2张图片
maskToBounds.jpg

    contentsRect:比contentsGravity灵活得多。可以在图层框里显示指定的部分。默认值是{0,0,1,1}。
    contentsCenter:定义了一个固定的边框和一个在图层上可卡神的区域,默认值是{0,0,1,1}。

iOS 核心动画(1)之基本概念_第3张图片
contentsCenter.jpg

    doubleSided:设置CALayer背部是否被绘制,默认是NO。

二、几何学
     圆角、图层边框、阴影、透明度不做讨论

    1.图层蒙板
         有时候你希望你展示的内容不是矩形或者圆形,就可以用到mask属性,设置该属性可以自定义内容的轮廓,即保留实心部分。

iOS 核心动画(1)之基本概念_第4张图片
mask.jpg

    2.拉伸过滤
      我们所要显示的内容的宽高并不是每次都能符合控件的宽高,CALayer提供了两种属性:minificationFilter(缩小图片) 和 magnificationFilter(放大图片)给我们设置。并提供了三种算法供我们根据实际情况选择:kCAFilterLinear、kCAFilterNearest、kCAFilterTrilinear,默认是kCAFilterLinear。

三、变换
 
1.仿射变换
        UIView提供了一个transform属性(CGAffineTransform类型)用于二维空间做旋转(rotation)、缩放(scale)和平移(translation)。图仿射变换1中的方法都是对单元矩阵进行变换,图仿射变换2中的方法是对第一个参数中的CGAffineTransform t进行变换。

仿射变换1.jpg
仿射变换2.jpg

比如imgView放大的是1.2倍,imgView1放大的是1.2*1.2倍。

iOS 核心动画(1)之基本概念_第5张图片


2.3D变换
    CGAffineTransform类型的前缀是CG,说明其属于Core Graphics框架,Core Graphics框架实际是一个严格意义上的2D绘图API,所以做不了3D空间的变换,但是CATransform3D类型可以。提供的方法和CGAffineTransform的功能一样,只是多出了一个z轴的变化。

3D变换1.jpg
3D变换2.jpg

  但是有一个需要注意,使用上述的方法对控件图层进行变换后,呈现的效果还只是2D视觉。因此我们还需要对图层进行透视投影。这里的操作很简单,对m34进行赋值即可。m34默认值是0,我们可以设置值为 -1.0/d 来应用透视效果,d表示想象中的视角相机和屏幕的距离。

iOS 核心动画(1)之基本概念_第6张图片
表.jpg

    举个例子

iOS 核心动画(1)之基本概念_第7张图片
例子.jpg

你可能感兴趣的:(iOS 核心动画(1)之基本概念)