Additive属性动画
2024-08-27 08:28:41
Additive属性动画
参考
http://ronnqvi.st/multiple-animations/
效果
源码
https://github.com/YouXianMing/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(, , , );
self.layer.backgroundColor = [UIColor redColor].CGColor;
self.layer.cornerRadius = .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 = .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
细节
最新文章
- webstorm 配置scss的问题
- 在VMware下正确克隆CentOS6.5的打开方式
- xml文件格式说明
- iOS开发笔记6:图片轮播及其无限循环效果
- 在Linux下用fdisk创建分区
- php 使用phpmailer 发送邮件(附带中文乱码的解决方法)
- Netty 中文教程 Hello World !详解
- Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器
- 透过表象看本质!?之三——Kalman滤波
- javascript(五)验证
- [iOS Animation]-CALayer 绘图效率
- 如何远程调试zookeeper集群
- 敏捷(Agile)——“说三道四”
- c++构造函数成员初始化中赋值和初始化列表两种方式的区别
- A1146. Topological Order
- android listView多层嵌套listView显示不全问题
- Docker进入容器后使用ifconfig等命令“command not found”解决办法
- SQL 加载
- 【转】Python中的字符串与字符编码
- Python Select模型(程序流程)(转)