iOS学习笔记

CABasicAnimation实用笔记

2018-04-08  本文已影响14人  见哥哥长高了

CABasicAnimation:基本动画,是CAPropertyAnimation的子类,可以创建对象实例化

@interface CABasicAnimation : CAPropertyAnimation
@end

通过+ (instancetype)animationWithKeyPath:(nullable NSString *)path;方法进行实例化

+ (instancetype)animationWithKeyPath:(nullable NSString *)path;
CABasicAnimation 属性
/**
如果设置动画时间为4s,speed设置为2,则动画只需2s即可执行完。
如果同时设置了动画的speed和layer 的speed,则实际的speed为两者相乘。
将speed 属性赋值为0,表示暂停动画
*/
@property float speed;

/**
动画执行开始到结束的时间间隔
*/
@property CFTimeInterval duration;

/**
动画开始时间 执行延迟操作的话 basicAnimation.beginTime = CACurrentMediaTime()+秒数;
*/
@property CFTimeInterval beginTime;  

/**
时间偏移 提前/推迟执行动画
*/
@property CFTimeInterval timeOffset;

/**
设置动画的次数。执行有限次数后停止执行。
*/
@property float repeatCount;

/**
设置动画的时间。在该时间内动画一直执行,不计次数。
*/
@property CFTimeInterval repeatDuration;

/**
动画结束时是否执行逆动画
*/
@property BOOL autoreverses;

/**
动画在开始和结束时的动作 默认值是 kCAFillModeRemoved
这个属性一般情况下使用默认的就行
*/
@property(copy) NSString *fillMode;
fillModel有下面几个结果
// 设置为该值,layer的状态将保持在动画的最后一帧,要想保持layer原状,应将removedOnCompletion设置为NO
CA_EXTERN NSString * const kCAFillModeForwards
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
//立即执行动画的第一帧
CA_EXTERN NSString * const kCAFillModeBackwards
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
// kCAFillModeForwards/kCAFillModeBackwards组合CA_EXTERN NSString * const kCAFillModeBoth
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
//设置为该值,动画将在设置的 beginTime 开始执行(如没有设置beginTime属性,则动画立即执行),动画执行完成后将会layer的改变恢复原状 
CA_EXTERN NSString * const kCAFillModeRemoved
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
/**
动画结束之后移除
*/
@property(getter=isRemovedOnCompletion) BOOL removedOnCompletion;
CABasicAnimation 实例

下面开看几个基础动画的实例
------位移

-(void)test1{
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
    basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(50, SCREEN_HEIGHT/2)];
    basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH - 50, SCREEN_HEIGHT/2)];
    basicAnimation.duration = 1;
    [self.testView.layer addAnimation:basicAnimation forKey:@"positionAnimation"];
}

------透明度变化

-(void)test2{
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
    basicAnimation.fromValue = [NSNumber numberWithFloat:1.0f];
    basicAnimation.toValue = [NSNumber numberWithFloat:.5f];
    basicAnimation.duration = 1.f;
    [self.testView.layer addAnimation:basicAnimation forKey:@"opacity"];
}

------缩放

-(void)test3{
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    basicAnimation.toValue = [NSNumber numberWithFloat:2.0f];
    basicAnimation.duration = 1.0f;
    [self.testView.layer addAnimation:basicAnimation forKey:@"scaleAnimation"];
}

------旋转

-(void)test4{
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    basicAnimation.toValue = [NSNumber numberWithFloat:M_PI];
    basicAnimation.duration = 1.0f;
    [self.testView.layer addAnimation:basicAnimation forKey:@"rotationAnimation"];
}

------颜色改变

-(void)test5{
    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    basicAnimation.toValue = (id)[UIColor grayColor].CGColor;
    basicAnimation.duration = 1.0f;
    basicAnimation.beginTime = CACurrentMediaTime()+3;
    [self.testView.layer addAnimation:basicAnimation forKey:@"bacogroundAnimation"];
}
上一篇下一篇

猜你喜欢

热点阅读