动画,专场,组动画

@property (weak, nonatomic) IBOutlet UIView *subV;

@property (weak, nonatomic) IBOutlet UIImageView *iV;

@property (nonatomic,strong) NSTimer *timer;

// 标记第几张图片
@property (nonatomic,assign) NSInteger index;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 设置圆角
    self.subV.layer.cornerRadius = 25;
    // 将超出部分的子视图截掉 (如果设置成yes,对阴影不起作用)
//    self.subV.layer.masksToBounds = YES;
    
    // 设置阴影
    [self.subV.layer setShadowColor:[UIColor grayColor].CGColor];
    // 设置阴影的偏移量
    [self.subV.layer setShadowOffset:CGSizeMake(-20, 20)];
    // 透明度
    [self.subV.layer setShadowOpacity:1.0];
    // 模糊程度
    [self.subV.layer setShadowRadius:8];
    
    // 创建layer
    [self creatLayer];
 
    
}

- (void)creatLayer {
    
    // 初始化layer
    CALayer *layer = [[CALayer alloc] init];
    // 设置大小
    layer.bounds = CGRectMake(0, 0, 100, 100);
    // 设置背景
//    layer.backgroundColor = [UIColor redColor].CGColor;
    
    // 锚点
    layer.anchorPoint = CGPointMake(0, 0);
    
    // 定位点
    layer.position = CGPointMake(50, 50);
    
    // 添加到父layer
    [self.view.layer addSublayer:layer];
    
}

// basic 动画
- (IBAction)CABasicAnimationAction:(UIButton *)sender {
    
    // 初始化basic对象
    CABasicAnimation *basic = [CABasicAnimation animation];
    
    // 设置要实现动画的属性
    
    // 平移动画
    basic.keyPath = @"position";
    // 设置从一个点移动到另外一个点
    basic.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
    basic.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
    
    // 如果想保存动画后的位置,必须设置下面两个设置
    basic.removedOnCompletion = NO;
    basic.fillMode = kCAFillModeForwards;
    
    
    // 设置动画时间
    basic.duration = 2.0f;
    
    [self.iV.layer addAnimation:basic forKey:@"basic"];
    
    
    
    CABasicAnimation *basic1 = [CABasicAnimation animation];
    
    // 设置旋转动画
    basic1.keyPath = @"transform";
    // 度数转弧度公式 度数 * π / 180
    basic1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(90 * M_PI / 180, 1, 1, 1)];
    basic1.duration = 2.0f;
    
    [self.iV.layer addAnimation:basic1 forKey:@"basic1"];
    
    // 删除key对应的动画
    [self.iV.layer removeAnimationForKey:@"basic1"];
    
}

// 帧动画
- (IBAction)CAKeyFrameAnimationActon:(UIButton *)sender {
    
    CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animation];
    // 设置要实现的动画属性
    keyFrame.keyPath = @"transform.rotation";
    keyFrame.values = @[@(-4 * M_PI / 180),@(4 * M_PI / 180),@(-4 * M_PI / 180)];
    // 设置动画时间
    keyFrame.duration = 1.0f;
    
    // 重复次数
    keyFrame.repeatCount = 5;
    
    [self.iV.layer addAnimation:keyFrame forKey:@"keyFrame"];
    
}

// 转场动画
- (IBAction)CATranstionAnimation:(UIButton *)sender {
    
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0F target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
}

- (void)timerAction {
    
    self.index ++;
    
    if (self.index == 19) {
        self.index = 0;
    }
    self.iV.image = [UIImage imageNamed:[NSString stringWithFormat:@"image%ld.jpg",self.index]];
    
    // 初始化转场动画
    CATransition *transition = [CATransition animation];
    
    // 设置转场动画类型
//    transition.type = kCATransitionMoveIn;
    transition.type = @"cube";
    
    // 设置转场动画方向
    transition.subtype = kCATransitionFromRight;
    
    // 动画开始位置
    transition.startProgress = 0;
    // 动画结束位置
    transition.endProgress = 1;
    
    transition.duration = 1;
    
    [self.iV.layer addAnimation:transition forKey:@"transition"];
    
}

// 组动画
- (IBAction)CATranstionGroupActon:(UIButton *)sender {
    
    // 平移
    CABasicAnimation *basic1 = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
    basic1.toValue = @(100);
    
    // 缩放
    CABasicAnimation *basic2 = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    basic2.toValue = @(0.5);
    
    // 旋转
    CABasicAnimation *basic3 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
    basic3.toValue = @(M_PI);
    
    // 初始化组动画
    CAAnimationGroup *group = [CAAnimationGroup animation];
    // 设置动画组里面的元素
    group.animations = @[basic1,basic2,basic3];
    
    // 设置动画时间
    group.duration = 2.0f;
    
    // 保存位置
//    group.removedOnCompletion = NO;
//    group.fillMode = kCAFillModeForwards;
    
    [self.iV.layer addAnimation:group forKey:@"group"];
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值