swift - 动画学习
// ViewController.swift
// MapAnimation
//
// Created by su on 15/12/10.
// Copyright © 2015年 tian. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var appBackGround:UIImageView!
var mapView: UIImageView!
var mapShowing:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.blackColor()
//构建第一视图
appBackGround = UIImageView(frame: CGRectMake(0, 64, self.view.frame.size.width,458))
appBackGround.image = UIImage(named: "app-bg")
self.view.addSubview(appBackGround)
//构建地图视图
mapView = UIImageView(frame: CGRectMake(0, 132, self.view.frame.size.width,458))
mapView.image = UIImage(named: "map-arrow")
mapView.alpha = 0
CGAffineTransformScale(mapView.transform, 1.1, 1.1)
self.view.addSubview(mapView)
//构建执行动画的button
let right = UIBarButtonItem(image: UIImage(named: "map-icon"), style: UIBarButtonItemStyle.Plain, target: self, action: "right")
self.navigationItem.rightBarButtonItem = right
}
func right() {
//显示地图的阻尼值是16 隐藏地图的阻尼值24
let damplingStiffness:CGFloat = 8.0
let daplingStiffnessOut:CGFloat = 12
if mapShowing {
mapShowing = false
//隐藏地图
UIView.animateWithDuration(0.1, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.appBackGround.alpha = 1
}, completion: nil)
let jnw缩放 = JNWSpringAnimation(keyPath: "transform.scale")
jnw缩放.damping = damplingStiffness
jnw缩放.stiffness = damplingStiffness
jnw缩放.mass = 1
//将尺寸从0.9 还原成1
jnw缩放.fromValue = 0.9
jnw缩放.toValue = 1
appBackGround.layer.addAnimation(jnw缩放, forKey: jnw缩放.keyPath)
appBackGround.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0)
//地图视图的动画代码
UIView.animateWithDuration(0.1, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.mapView.alpha = 0
}, completion: nil)
let jnw地图缩放 = JNWSpringAnimation(keyPath: "transform.scale")
jnw地图缩放.damping = daplingStiffnessOut
jnw地图缩放.stiffness = daplingStiffnessOut
jnw地图缩放.mass = 1
jnw地图缩放.fromValue = 1.1
jnw地图缩放.toValue = 1
self.mapView.layer.addAnimation(jnw地图缩放, forKey: jnw地图缩放.keyPath)
self.mapView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1)
//位移jnw对象
let jnw地图下移 = JNWSpringAnimation(keyPath: "transform.translation.y")
jnw地图下移.damping = daplingStiffnessOut
jnw地图下移.stiffness = daplingStiffnessOut
jnw地图下移.mass = 1
jnw地图下移.fromValue = 0
jnw地图下移.toValue = 30
self.mapView.layer.addAnimation(jnw地图下移, forKey: jnw地图下移.keyPath)
self.mapView.transform = CGAffineTransformTranslate(self.mapView.transform, 0, 0)
} else {
//显示地图
mapShowing = true
//第一视图的动画代码
UIView.animateWithDuration(0.1, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.appBackGround.alpha = 0.3
}, completion: nil)
let scale = JNWSpringAnimation(keyPath: "transform.scale")
scale.damping = damplingStiffness
scale.stiffness = damplingStiffness
scale.mass = 1
//初始值取得当前背景的缩放值
scale.fromValue = 1
scale.toValue = 0.9
self.appBackGround.layer.addAnimation(scale, forKey: scale.keyPath)
self.appBackGround.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9)
//地图动画代码
UIView.animateWithDuration(0.1, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.mapView.alpha = 1
}, completion: nil)
//利用jnw框架组合两个动画
let mapScale = JNWSpringAnimation(keyPath: "transform.scale")
mapScale.damping = daplingStiffnessOut
mapScale.stiffness = daplingStiffnessOut
mapScale.mass = 1
mapScale.fromValue = 1
mapScale.toValue = 1.1
self.mapView.layer.addAnimation(mapScale, forKey: mapScale.keyPath)
self.mapView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1)
//位移动画
let mapTranslate = JNWSpringAnimation(keyPath: "transform.translation.y")
mapTranslate.damping = daplingStiffnessOut
mapTranslate.stiffness = daplingStiffnessOut
mapTranslate.mass = 1
mapTranslate.fromValue = 30
mapTranslate.toValue = 0
self.mapView.layer.addAnimation(mapTranslate, forKey: mapTranslate.keyPath)
self.mapView.transform = CGAffineTransformTranslate(self.mapView.transform, 0, 0)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
swift - 动画学习的更多相关文章
- Swift 动画学习笔记
视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...
- Android动画学习(二)——Tween Animation
前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...
- 一份关于Swift语言学习资源的整理文件
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
- Swift入门学习之一常量,变量和声明
版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- OSG动画学习
OSG动画学习 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=3899&_dsign=2587a6a9 学习动画,看了 ...
- android动画学习
android动画学习 转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,twe ...
- Swift开发学习(两):Playground
Swift开发学习:Playground 大约 对于软件用户.游戏玩家,我一直提倡用户体验.也是用户,是各种开发工具的使用者.也会喜欢用户体验做得好的工具软件.这次苹果想开发人员所想,提供了一个能够玩 ...
- ios 动画学习的套路 (二)
有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库 ...
随机推荐
- python连接redis sentinel集群
安装 python redis 客户端 pip install redis #!/usr/bin/env python # -*- coding:utf-8 -*- #!/usr/bin/env py ...
- ODBC, OLEDB, ADO, ADO.Net的演化简史
ODBC, OLEDB, ADO, ADO.Net的演化简史 Copy&Paste了一下午,终于一蹴而就此文,嘿嘿... 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->O ...
- Thinkphp 查询条件 and 和 or同时使用即复合查询
thinkphp 3.2快捷查询OR查询&分割表示AND查询讲解 快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表 ...
- Oracle 取某100天的每一天的日期
SELECT TO_DATE('2016-01-01', 'yyyy-MM-dd') + ROWNUM - 1 as daylist,TO_DATE('2016-01-01', 'yyyy-MM-dd ...
- 引用变量类型的加载顺序(类名+引用名=new +类名();)
程序如下: 运行结果如下: 以上结果说明:同一个引用名称(可以把它当做变量的一种类型)可能指代不同的对象,依据同一个引用是否处于同一个初始化的层次,决定是否在完成: static Cup c1=new ...
- Ubuntu 中安装 Docker
检查 Device Mapper 是否存在 sch01ar@ubuntu:~$ ls -l /sys/class/misc/device-mapper 安装 Ubuntu 维护的版本 sch01ar@ ...
- C入门程序整体框架图
0.1:概述, 从头开始介绍一门编程语言总是显得很困难,因为有许多的细节还没有介绍,很难让读者在大脑中形成一幅完整的图, 所以起步时以一个列程序向学折介绍大体的C,试图使大家对C有一个整体大概 影响. ...
- 《OpenCL异构并行编程实战》补充笔记散点,第五至十二章
▶ 第五章,OpenCL 的并发与执行模型 ● 内存对象与上下文相关而不是与设备相关.设备在不同设备之间的移动如下,如果 kernel 在第二个设备上运行,那么在第一个设备上产生的任何数据结果在第二个 ...
- 什么是“堆”,"栈","堆栈","队列",它们的区别?
堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象.堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值: ·堆总是一棵完全二叉树. 将根节点最大的堆叫做最大堆 ...
- 通过django创建数据库的方法
在models 文件中实现 a. from django.db import models class UserInfo(models.Model): #id列, 自增, 主键 #用户名列, 字符串类 ...