CAAnimation继承自NSObject 实现接口CAMediaTiming, CAAction
子类
- CAPropertyAnimation
- CATransition
CAPropertyAnimation的子类
- CABasicAnimation
- CAKeyframeAnimation
属性:
- CAMediaTimingFunction *timingFunction;//动画速度
- NSString *type; //动画效果
fade',
moveIn’, push' and
reveal’
- NSString *subtype;//动画方向
fromLeft',
fromRight’, fromTop' and
fromBottom’
1.例子 弹出一个子视图 从左边出来 右边消失
包含头文件
#include <QuartzCore/CoreAnimation.h>
//创建CATransition对象
+ (instancetype)animation;
CATransition *animation = [CATransition animation];
//从左边出来
- (void)doAddAnimation:(UIView *)vc{
CATransition *animation = [CATransition animation];
[animation setDuration:.5f];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[vc.layer addAnimation:animation forKey:nil];
}
//右边消失
- (void)doRemoveAnimation:(UIView *)view{
CATransition *animation = [CATransition animation];
[animation setDuration:.5f];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setType:kCATransitionReveal];
[animation setSubtype:kCATransitionFromLeft];
[view.layer addAnimation:animation forKey:nil];
}
测试一下
UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(10, 20, 300, 200)];
subview.backgroundColor = [UIColor greenColor];
TKClient *client = [[TKClient alloc] init];
[client doAddAnimation:subview];
[self.view addSubview:subview];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
TKClient *client = [[TKClient alloc] init];
[client doRemoveAnimation:subview];
subview.hidden = YES;
});