POP缩放动画
POP缩放动画
效果
源码
https://github.com/YouXianMing/Animations
//
// SpringScaleViewController.m
// Animations
//
// Created by YouXianMing on 16/6/3.
// Copyright © 2016年 YouXianMing. All rights reserved.
// #import "SpringScaleViewController.h"
#import "UIView+SetRect.h"
#import "UIFont+Fonts.h"
#import "GCD.h"
#import "POP.h" @interface SpringScaleViewController () @property (nonatomic, strong) UIView *scaleView; @end @implementation SpringScaleViewController - (void)setup { [super setup]; // Label
UILabel *label = [[UILabel alloc] init];
label.text = @"P P";
label.font = [UIFont HYQiHeiWithFontSize:];
[label sizeToFit];
label.center = self.contentView.middlePoint;
[self.contentView addSubview:label]; // Circle
self.scaleView = [[UIView alloc] initWithFrame:CGRectMake(, , , )];
self.scaleView.backgroundColor = [[UIColor colorWithRed:0.203 green:0.598 blue:0.859 alpha:] colorWithAlphaComponent:0.95f];
self.scaleView.layer.cornerRadius = self.scaleView.width / .f;
self.scaleView.center = self.contentView.middlePoint;
[self.contentView addSubview:self.scaleView]; // Start animation after 1 second.
[GCDQueue executeInMainQueue:^{ [self scaleAnimation]; } afterDelaySecs:.f];
} - (void)scaleAnimation { POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scaleAnimation.name = @"scaleSmallAnimation";
scaleAnimation.delegate = self; scaleAnimation.duration = 0.15f;
scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1.25, 1.25)];\ [self.scaleView pop_addAnimation:scaleAnimation forKey:nil];
} - (void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished { if ([anim.name isEqualToString:@"scaleSmallAnimation"]) { POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scaleAnimation.name = @"SpringAnimation";
scaleAnimation.delegate = self; scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(, )];
scaleAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(-, -)];
scaleAnimation.springBounciness = .f;
scaleAnimation.springSpeed = .f;
scaleAnimation.dynamicsTension = .f;
scaleAnimation.dynamicsFriction = .f;
scaleAnimation.dynamicsMass = .f; [self.scaleView pop_addAnimation:scaleAnimation forKey:nil]; } else if ([anim.name isEqualToString:@"SpringAnimation"]) { [self performSelector:@selector(scaleAnimation) withObject:nil afterDelay:];
}
} - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[self class] cancelPreviousPerformRequestsWithTarget:self];
} @end
细节
1. 参数设置有技巧,可以参考如下所示(项目中的POPSpringParameterController):
2. 动画效果是通过组合两个动画而来的,要注意设置代理:
POP缩放动画的更多相关文章
- Android实现Layout缩放动画
最近看到Any.do的缩放效果很酷,看到一篇讲Layout缩放动画实现的文章,记录一下: http://edison-cool911.iteye.com/blog/704812
- 动画--问题追踪:ImageView执行缩放动画ScaleAnimation之后,图像显示不全的问题。
http://www.bkjia.com/Androidjc/929473.html: 问题追踪:ImageView执行缩放动画ScaleAnimation之后,图像显示不全的问题., 问题:我有一个 ...
- iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏
1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...
- iOS利用Runtime自定义控制器POP手势动画
前言 苹果在iOS 7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操 ...
- AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)
放动画效果,可以使用ScaleAnimation: <Button android:id="@+id/btnScale2" android:layout_width=&quo ...
- AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析
先看个效果图: 上一篇中,我们留了问题,在 Tv Home 界面这种很常见聚焦卡位放大动画效果,我们这一篇就来看看 Leanback 库是怎么实现的. 如果要我们自己实现的话,思路应该不难,就是写个放 ...
- Android缩放动画
Android缩放动画 核心方法 public void startAnimation(Animation animation) 执行动画,参数可以是各种动画的对象,Animation的多态,也可以是 ...
- pop弹簧动画实现
POP是一个在iOS与OS X上通用的极具扩展性的动画引擎.它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画.POP的API可以快速的与现有的ObjC代码集成 ...
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
随机推荐
- nodejs乱码处理
1.处理回显乱码 res.write("<head><meta charset='utf-8'></head>"); 2.处理传参乱码 quer ...
- foxmail占cpu 100%解决办法
Win10,x64 Foxmail 7.2.9.075 解决办法: 1. 删除文件夹 d:\Program Files\Foxmail\Storage\邮箱\Indexes2. 菜单 –>帮助 ...
- linux 检测远程端口是否打开
linux 检测远程端口是否打开 检测远程端口是否打开 常用telnet 110.101.101.101 80方式测试远程主机端口是否打开. 除此之外还可以使用: 方法1.nmap i ...
- bzoj 1188
博弈的题目做的还是太少啦... 不会写啊啊啊 思路:将每个石子看成一个游戏, 那么整个游戏sg值就是全部石子sg值的异或. #include<bits/stdc++.h> #define ...
- sublime text3快速生成html头部信息(转)
sublime text3快速生成html头部信息 https://blog.csdn.net/sunshinegirl_7/article/details/49802579 经常见别人创建新的ht ...
- Qt代码创建分隔条
我们在使用Qt时,会发现在使用UI界面时可以添加窗口分隔条,但我们使用纯代码时却没有分隔条的类函数.这时候我们就需要手动添加,添加方式和Qt自定义标签按钮一样,下面我直接写代码.如果不知道怎么添加的, ...
- 浅谈Spring的AOP实现-代理机制
说起Spring的AOP(Aspect-Oriented Programming)面向切面编程大家都很熟悉(Spring不是这次博文的重点),但是我先提出几个问题,看看同学们是否了解,如果了解的话可以 ...
- 循序渐进学.Net Core Web Api开发系列【0】:序言与目录
一.序言 我大约在2003年时候开始接触到.NET,最初在.NET framework 1.1版本下写过代码,曾经做过WinForm和ASP.NET开发.大约在2010年的时候转型JAVA环境,这么多 ...
- Django(request和response)
原文链接: https://blog.csdn.net/weixin_31449201/article/details/81043326 Django中的请求与响应 一.请求request djang ...
- Linux usb 驱动程序范例
linxu_usb驱动之框架 USB骨架程序可以被看做一个最简单的USB设备驱动的实例. 首先看看USB骨架程序的usb_driver的定义 [cpp] view p ...