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 动画学习的套路 (二)
有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库 ...
随机推荐
- CentOS下用yum配置php+mysql+apache
环境: CentOS5.4 yum 想在一台CentOS的机器上安装配置支持dedeCMS的php+mysql+apache环境,把摸索的过程记录如下: 1. 安装Apahce, PHP, Mysq ...
- [C++ Primer] 第9章: 顺序容器
顺序容器概述 顺序容器的类型有: 类型 说明 vector 可变长度数组. 支持快速随机访问. deque 双端队列. 支持快速随机访问. list 双向链表. 只支持双向顺序访问. forward_ ...
- APN与VPDN的主要区别
VPDN APN 安全性 二次认证,加密 一次认证,没有加密 企业成本 高 低 对GGSN要求 可接受动态配置LNS参数信息,对GGSN性能影响小. 静态配置GRE隧道参数,性能影响较大,部分厂家对G ...
- elasticsearch RESTful
一 .索引(index) 1. 创建索引 (1)第一种方式 PUT twitter { "settings" : { "index" : { "num ...
- Hibernate SQL 查询
本文转载自:https://www.cnblogs.com/li3807/p/6358386.html Hibernate 支持使用原生的SQL查询,使用原生SQL查询可以利用某些数据库特性,原生SQ ...
- java web 程序---留言板
思路:一个form表单,用户提交留言 一个页面显示留言内容.用到Vector来存取信息并显示 cas.jsp <body> <form action="fei.jsp&qu ...
- 关于eclipse open call hierarchy功能的一个细节
这个功能对应的快捷键是ctrl alt H,大家应该都很熟悉了.默认是查找这个方法的被调用堆栈.90%的人应该也是习惯这个默认的功能的,也基本无视它的另一个功能. 昨天重启eclipe之后,我的ecl ...
- C# 使用printDocument1.Print打印时不显示 正在打印对话框(里面还有一个讨厌的取消按钮)
C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printController = n ...
- PowerDesigner 生成的脚本取掉双引号
建模工具PowerDesigner http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html 默认导出在带双引号,表名称后期使用的时 ...
- python 发送带附件的 邮件
from email.MIMETextimportMIMETextfrom email.MIMEMultipartimportMIMEMultipartimport smtplib mail_host ...