动画浅析

作者: letaibai | 来源:发表于2016-05-04 09:34 被阅读17次

    动画是iOS开发中非常常用的功能,我们可以通过动画做出非常炫目的效果,有趣的界面.下面简单介绍下动画的创建.

    layer

    每个view都有一个layer层,用来显示图形.layer也可以做动画.

    • 创建layer
        //创建layer
        CALayer *layer = [[CALayer alloc] init];
        //设置layer的阴影颜色
        layer.shadowColor = [UIColor redColor].CGColor;
        //设置layer的阴影偏移量
        layer.shadowOffset = CGSizeMake(10, 10);
        //设置layer的背景色
        layer.backgroundColor = [UIColor redColor].CGColor;
        //设置layer的frame
        layer.frame = CGRectMake(0, 0, 100, 100);
        //设置layer的锚点
        layer.anchorPoint = CGPointZero;
        //设置layer的position
        layer.position = CGPointZero;
        //将layer添加至父控件的layer上
        [_orangeView.layer addSublayer:layer];
    
    注意:在创建layer时,必须设置frame与背景色,否则将无法显示出来.
    
    • 关于锚点(anchorPoint)与position

      position是决定了layer显示在父控件的哪个位置,默认position是该layer的中心点.

      anchorPoint决定了layer自身显示在position的哪个位置.

    不设置position与anchorPoint

    设置position为(0,0)

    设置锚点为(0,0)

    设置锚点和position同时为(0,0)

    从上述设置可以看出:
    1. position与锚点的默认点为中心点
    2. position总是与锚点显示在同一位置
    3. layer是否发生偏移有锚点决定
    

    layer的动画设置

    • 我们可以通过设置layer的平移,缩放,旋转等属性来让layer做出动画效果.
        //设置偏移(相对于上一次)
       _layer.transform = CATransform3DTranslate(<#CATransform3D t#>, <#CGFloat tx#>, <#CGFloat ty#>, <#CGFloat tz#>)
        //设置旋转(相对于上一次)
       _layer.transform = CATransform3DRotate(<#CATransform3D t#>, <#CGFloat angle#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat z#>);
        //设置缩放(相对于上一次)
       _layer.transform = CATransform3DScale(<#CATransform3D t#>, <#CGFloat sx#>, <#CGFloat sy#>, <#CGFloat sz#>)
        //设置旋转(相对于原始位置)
       _layer.transform = CATransform3DMakeRotation(<#CGFloat angle#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat z#>)
        //设置缩放(相对于原始位置)
       _layer.transform = CATransform3DMakeScale(<#CGFloat sx#>, <#CGFloat sy#>, <#CGFloat sz#>)
        //设置偏移(相对于原始位置)
       _layer.transform = CATransform3DMakeTranslation(<#CGFloat tx#>, <#CGFloat ty#>, <#CGFloat tz#>)
    

    相关文章

      网友评论

        本文标题:动画浅析

        本文链接:https://www.haomeiwen.com/subject/vggkrttx.html