CALayer(一)

CALayer

CALayer和UIView

CALayer和UIView相比--CALayer少了事件处理的功能,所以更加轻量级,性能更好一点,这就说明如果有一些和用户交互的东西是不建议用CALayer的

CALayer下的基本动画

这里是一个简单的CABasicAnimation的动画效果--延Z轴旋转的小太阳

旋转.gif


//转动的小太阳
    _sunLayer = [[CALayer alloc]init];
    _sunLayer.bounds = CGRectMake(0, 0, 80, 80);
    _sunLayer.position = CGPointMake(self.view.width -80, 180);
    _sunLayer.delegate = self;//设置图层代理
    _sunLayer.cornerRadius = 40;//圆角
    _sunLayer.masksToBounds = YES;//
    _sunLayer.contents = (id)[UIImage imageNamed:@"sun"].CGImage;
    [self.view.layer addSublayer:_sunLayer];//添加图层到根图层
    [self beginAnimation];//执行动画的方法

  -(void)beginAnimation {
    
    //1.创建动画
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    //2.设置动画属性初始值和结束值
    basicAnimation.toValue = [NSNumber numberWithFloat:M_PI*2];
    //3.设置其他动画属性
    basicAnimation.duration = 5.0;
    basicAnimation.removedOnCompletion = NO;//结果后是否移除
    basicAnimation.repeatCount = HUGE_VAL;//设置重复次数,huge_valf可看做无穷大,起到循环动画的效果
    //4.添加动画到图层,注意key相当于给动画进行命名,以后获得该动画时可以使用此名称获取
    [_sunLayer addAnimation:basicAnimation forKey:@"animation_transframe"];
}

这样这个图片就会在Z轴旋转

原文地址:https://www.cnblogs.com/ritian/p/6371646.html