iOS基础知识

动画浅析

2016-05-04  本文已影响17人  letaibai

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

layer

每个view都有一个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与背景色,否则将无法显示出来.

不设置position与anchorPoint

设置position为(0,0)

设置锚点为(0,0)

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

从上述设置可以看出:
1. position与锚点的默认点为中心点
2. position总是与锚点显示在同一位置
3. 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#>)
上一篇下一篇

猜你喜欢

热点阅读