CABasicAnimation用法

CABasicAnimation自己只有三个 fromValue toValue ByValue

当你创建一个CABasicAnimation时 你需要通过setFromValue 和 setToValue来指定一个开始值和结束值 当你增加基础动画到层中的时候 它开始运行当属性做完动画时 例如用位置属性做动画 层就会立刻返回 返回到它的初始位置

记住当你做动画时 你至少使用了两个对象 这些对象都是层本身 一个层或者层继承的队像 和在先前的例子中你分配给层的CABasicAnimation对象 因为你给动画对象设置了最后的值当动画完成时 你必须显示的设置层的属性 这样动画结束后 你的层才能真正的到你设定的属性值上

 你可以简单的停止动画到你结束的点上 但是这仅仅只是一个视觉效果 层实际的值 仍是一样的 要真的改变内部的值 就像刚才所说你必须设置那个属性 例如 显示的设定位置的属性你需要在层中调用setPosition方法 但是 这会造成一点问题

 如果你通过set方法显示的设定了层属性的值 那么默认的动画将被执行 而非之前你设定的动画 我们使用position已经创建了基础的动画 但是我们在层上显示的调用了setposition方法 就覆盖了我们设定的动画 使我们设定的基础完全没用了 如果你使用了这个代码 你会看到虽然我们的层结束的时候放到了正确的位置但是它使用的只是默认的0.25秒种而非哦鹅们在动画里设置的5秒钟

 用动画实现一个画框框的效果

 代码如下

  

-(void)intiUIOfView

{

   

 

    UIBezierPath *path=[UIBezierPathbezierPath];

    [path moveToPoint:CGPointMake(10,60)];

    [path addLineToPoint:CGPointMake(300,60)];

    [path addLineToPoint:CGPointMake(300,180)];

    [path addLineToPoint:CGPointMake(10,180)];

    [path addLineToPoint:CGPointMake(10,60)];

    arcLayer=[CAShapeLayerlayer];

   arcLayer.path=path.CGPath;

    arcLayer.fillColor=[[UIColorgrayColor]CGColor];

    arcLayer.strokeColor=[[UIColorwhiteColor]CGColor];

    [self.view.layeraddSublayer:arcLayer];

    [selfdrawLineAnimation:arcLayer];

    

}

-(void)drawLineAnimation:(CALayer*)layer

{

    CABasicAnimation *bas=[CABasicAnimationanimationWithKeyPath:@"strokeEnd"];

    bas.duration=3;

    bas.fromValue=[NSNumbernumberWithInteger:0];

    bas.toValue=[NSNumbernumberWithInteger:1];

    [layeraddAnimation:bas forKey:@"nil"];

}

首先是UIBezierPath指明了路径

其次是CAShapeerLayer接受了路径

再就是CABasicAnimation指明了做动画的方式根据路径去画@“strokeEnd”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值