码迷,mamicode.com
首页 > 其他好文 > 详细

Additive属性动画

时间:2016-01-22 00:12:55      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

Additive属性动画

技术分享

 

参考

http://ronnqvi.st/multiple-animations/

 

效果

技术分享

 

源码

//
//  AdditiveAnimationController.m
//  Animations
//
//  Created by YouXianMing on 16/1/21.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "AdditiveAnimationController.h"
#import "UIView+SetRect.h"

@interface AdditiveAnimationController ()

@property (nonatomic, strong) CALayer  *layer;

@end

@implementation AdditiveAnimationController

- (void)setup {
    
    [super setup];
    
    // http://ronnqvi.st/multiple-animations/
    
    self.layer                 = [CALayer layer];
    self.layer.frame           = CGRectMake(0, 0, 30, 30);
    self.layer.backgroundColor = [UIColor redColor].CGColor;
    self.layer.cornerRadius    = 15.f;
    self.layer.position        = self.contentView.middlePoint;
    [self.contentView.layer addSublayer:self.layer];
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent:)];
    [self.contentView addGestureRecognizer:tap];
}

- (void)tapEvent:(UITapGestureRecognizer *)tapGesture {
    
    CGPoint touchPoint      = [tapGesture locationInView:tapGesture.view];
    CGPoint differencePoint = CGPointMake(self.layer.position.x - touchPoint.x,
                                          self.layer.position.y - touchPoint.y);
    
    CALayer *presentationLayer = self.layer.presentationLayer;
    NSLog(@"%@", presentationLayer);
    
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.duration          = 1.f;
    animation.timingFunction    = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    animation.additive          = true;
    animation.fromValue         = [NSValue valueWithCGPoint:differencePoint];
    animation.toValue           = [NSValue valueWithCGPoint:CGPointZero];
    
    [CATransaction begin];
    [CATransaction setDisableActions:YES];
    self.layer.position = touchPoint;
    [CATransaction commit];
    
    [self.layer addAnimation:animation forKey:nil];
}

@end

 

细节

技术分享

 

Additive属性动画

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/5149733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!