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 动画学习的套路 (二)
有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库 ...
随机推荐
- django创建第一个项目helloworld
环境:centos 7,已安装python 3.6环境 1.安装django并创建django第一个项目 1.1.使用pip安装django# pip install Django或指定安装版本# p ...
- bzoj2431逆序对数列
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2431 很容易想到n^3的做法.就是前 i 个数用第 i 个数最多能 i - 1 个逆序对,所 ...
- Web service 框架比较CXF xfire aisx2 aisx
Web 服务框架.它还体现了从 Axis 1.x 系列获得的经验和最近两年在 Web 服务领域的发展.推出 Axis2 的主要原因之一是从速度和内存方面获得更好的性能——不过还添加了一些新特性和功能. ...
- MyEclipse下Tomcat无法部署项目 finish按钮无法点击
问题描述:MyEclipse环境下,使用Tomcat进行项目部署时,无法部署项目,finish按钮无法点击. 问题原因:Context-root丢失 解决办法:右击项目->properties- ...
- Java中数组转为List三种情况的优劣对比,常犯的类型转换错误原因解析
一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常. 关键代码:List list = Arrays. ...
- [转]C# 测试网络连接
原文链接:http://blog.csdn.net/lsfa1234/article/details/6291228 using System; using System.Web; using Sys ...
- TensorFlow计算图,张量,会话基础知识
import tensorflow as tf get_default_graph = "tensorflow_get_default_graph.png" # 当前默认的计算图 ...
- MySQL 存储配置
- Django学习---Form组件认证
Form组件认证 能够帮助我们做用户认证. 以前写我们自己写用户认证的时候,我们自己写HTML的form表单,点击提交,数据就被发送到后台,后台进行验证.在验证过程中我们就需要自己去写正则表达式去匹配 ...
- Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]
1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model; import java.util.Date; ...