iOS动画编程-View动画[ 2 ] Spring动画

news/2024/12/13 13:24:01

介绍

iOS中SpringAnimation是一种常见的动画,其效果就像弹簧一样,会在end point周围摆动几下后再回到end point,这里我们来介绍一下SpringAnimation的使用方法
图片描述

我们会用到的Method

UIView.animateWithDuration(_:, delay:, 
 usingSpringWithDamping:, 
 initialSpringVelocity:, options:, 
 animations:, completion:)

这次的函数相比上次增加了两个参数:

  • usingSpringWithDamping: 参数的范围为0.0f到1.0f,数值越小「弹簧」的振动效果越明显。可以视为弹簧的劲度系数

  • initialSpringVelocity: 表示动画的初始速度,数值越大一开始移动越快。

Demo

继续上次的Demo,我们在viewWillAppear中先修改控件位置

  override func viewWillAppear(animated: Bool) {super.viewWillAppear(animated)heading.center.x -= view.bounds.widthusername.center.x -= view.bounds.widthpassword.center.x -= view.bounds.widthloginButton.center.y += 30.0loginButton.alpha = 0}

加特技!

隐藏登录按钮

UIView.animateWithDuration(1.0, delay: 0.8, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: { () -> Void in//先隐藏登录按钮self.loginButton.center.y -= 30.0self.loginButton.alpha = 1.0}, completion: nil)

 在viewDidAppear方法中,使用Spring动画使按钮弹出,同时透明度变成1

UIView.animateWithDuration(1.0, delay: 0.8, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: { () -> Void in
self.loginButton.center.y -= 30.0
self.loginButton.alpha = 1.0
}, completion: nil)

点击按钮时按钮的动画效果

@IBAction func login() {
view.endEditing(true)let bounds = self.loginButton.bounds
//使按钮的位置向下移动20,宽度增加80
UIView.animateWithDuration(1.5, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 20, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void inself.loginButton.bounds = CGRect(x: bounds.origin.x-20, y: bounds.origin.y, width: bounds.size.width+80, height: bounds.size.height)}) { _ in//完成的动作
}//spinner出现,调整位置,调整Button颜色UIView.animateWithDuration(0.33, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void inself.loginButton.center.y += 60self.spinner.alpha = 1.0self.spinner.center = CGPoint(x: 40, y: self.loginButton.frame.size.height/2)self.loginButton.backgroundColor = UIColor(red: 0.85, green: 0.83, blue: 0.45, alpha: 1.0)}, completion: nil)}

https://dhexx.cn/news/show-3673623.html

相关文章

项目沟通管理、项目合同管理作业

一、项目沟通管理: 1、项目沟通管理包括哪些过程; (1)沟通计划编制(2)信息分发(3)绩效报告(4)项目干系人管理2、沟通管理计划的主要内容;(1)项目干系人沟通要求(2)对要发布信息的描述(3)信息接收的个人或组织(4)传达信息所需的技术和方法&…

wkhtmtopdf--高分辨率HTML转PDF(二)

命令行 wkhtmtopdf有一些很实用的命令,平时如果不用代码,可以直接使用命令行来把你喜欢的任意网页转换为PDF, 命令行参考网址:http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0_rc2-doc.html#Page%20Options 1.方法…

求矩阵特殊值两种方法

啊,回来了。自闭了一个月多dota233 好好学习补欠债。 qr法: https://blog.csdn.net/cinmyheart/article/details/44086369 幂法只能求最大最小跳过 雅可比公式法: https://blog.csdn.net/qq_32065823/article/details/81839325 https://en.wi…

java泛型反射

最近使用泛型听频繁的,先简单的总结下,慢慢更新。 问题:现在有两个dao里面有相同的方法,只是查的表和返回的类型不一样,我们写一个BaseDao,写公用的方法,让其他的dao来继承。这里的前提是实体类…

个人经验总结

1.修改bug,不要只想,而是要实际行动,找到代码的位置,尝试着修改。要一遍遍尝试,找规律,尤其在修改他人的代码时,表的关系一定要对应好。 2.搞接口,数据同步,一定要知道表…

Grid-layout

Grid-template-columns : 设置网格布局每一列的宽度。 repeat: 是个函数,重复之前的命令行,根据之前的重复传入的参数来执行。 fr:长度单位。 wrapper {display: grid; //定义一个网格 grid-template-columns: repeat…

javascript 二维(多维)数组的复制问题

最近在项目中遇到一个动画暂停的效果,需要在动画停止的时候检测当前坐标和已经运行的时间,从而调节时间轴为再次运行时加速。 但是在数组保存方面折腾了半天。 var orbitArray [], lineArray []; orbitArray lineArray; //错误方式,javas…

455.分发饼干【贪心算法】

455.分发饼干 题⽬链接:https://leetcode-cn.com/problems/assign-cookies/ 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子…

(转)直接拿来用!最火的iOS开源项目(二)

“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目已经被弃用,即使曾经的它很受…

linux中ldconfig的使用介绍

ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。 ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。 搜索出可共享的动态链接库,库文件的格式为&#x…