iOS核心动画技巧学习 -- 布局

  • UIView: frame bounds center
  • CALayer: frame bounds position

    • frame : 代表了图层外部坐标(在父视图上占据的空间)
    • bounds: 是内部坐标({0,0},通常是当前图层的左上角)
    • center 视图的中心点
    • position 代表当前图层相对于图层的锚点(anchorPoint)所在父层中的位置
    • frame 属性是依据 bounds position transform 计算而得的,其中的一个值发生改变, frame 也会改变,反之亦然
    • 当对图层做变换(旋转或缩放)的时候, frame实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,此时 frame 的宽高和 bounds 的宽高不一样
    • anchorPoint 锚点,是用来决定当前图层 (CALayer)自身上的哪个点会在 position 属性所指的位置,以自身左上角为原点(0 ,0),默认值是(0.5,0.5),范围是(0~1)
  • 举例说明

    • 添加一个绿色图层到蓝色图层上
    • 然后具体绿色图层要显示到什么位置,由绿色图层的position决定,这里设置为(100,100)
    • 具体把绿色图层的哪个点移动到(100,100),由自身的锚点决定,就像往墙上钉相框(摆的位置不考虑地心引力)
  • CAlayer独有的Z坐标系

    • UIView 的二维坐标系不同, CALayer存在于一个三维空间中,它有俩个特有属性 zPositionanchorPiontZ,俩个都是浮点类型
    • 常用语图层的显示顺序,通常图层是根据它的子图层 sublayers 出现顺序来绘制的
    • 画家算法 : 一个画家在墙上作画,后被绘制的图层将会遮住之前的图层
    • 通过增加图层的 zPosition 把图层前置,设置为0.1或者0.000001都可以,但是最好不要这样,避免由于浮点型四舍五入的计算造成不必要的麻烦
这个人很帅<br>他什么都不想说<br>