//
//  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 - 动画学习的更多相关文章

  1. Swift 动画学习笔记

    视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...

  2. Android动画学习(二)——Tween Animation

    前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...

  3. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  4. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  5. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  6. OSG动画学习

    OSG动画学习 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=3899&_dsign=2587a6a9 学习动画,看了 ...

  7. android动画学习

    android动画学习   转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,twe ...

  8. Swift开发学习(两):Playground

    Swift开发学习:Playground 大约 对于软件用户.游戏玩家,我一直提倡用户体验.也是用户,是各种开发工具的使用者.也会喜欢用户体验做得好的工具软件.这次苹果想开发人员所想,提供了一个能够玩 ...

  9. ios 动画学习的套路 (二)

    有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库 ...

随机推荐

  1. Hive之 hive与hadoop的联系

    Hive与Hadoop调用图 解析: 1.提交sql 交给驱动2.驱动编译:解析相关的字段表信息3.去metastore查询相关的信息 返回字段表信息4.编译返回信息 发给驱动5.驱动发送一个执行计划 ...

  2. 浅析 MySQL Replication(转)

    目前很多公司中的生产环境中都使用了MySQL Replication ,也叫 MySQL 复制,搭建配置方便等很多特性让 MySQL Replication 的应用很广泛,我们曾经使用过一主拖20多个 ...

  3. emacs之配置etags

    emacsConfig/etags-setting.el (require 'auto-complete-etags) (setq ac-sources (append '(ac-source-eta ...

  4. java scanner工具类

    import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanne ...

  5. RDLC报表系列一

    1.报表项目搭建: 配置好后,单击Web服务URL:http://lg-20151517ryre/ReportServer 如果电脑系统打开的时候没有设置密码的话,此时打开有可能会出现需要登录名和密码 ...

  6. GREENPLUM简介

    什么是GREENPLUM? 对于很多IT人来说GREENPLUM是个陌生的名字.简单的说它就是一个与ORACLE, DB2一样面向对象的关系型数据库.我们通过标准的SQL可以对GP中的数据进行访问存取 ...

  7. (转)powerdesigner 生成sql脚本使用的设置

    本文转载自:http://blog.163.com/lizhihaoo@126/blog/static/103121661201036171115/ 1. 生成sql脚本的时候,提示"con ...

  8. bzoj2505: tickets

    Description          有一位售票员给乘客售票,对于每位乘客,他会卖出多张连续的票,直到已卖出的编号的所有位置上的数的和不小于给定的正数k.然后他会按照相同的规则给下一位乘客售票.初 ...

  9. 面试总结之Linux/Shell

    Linux Linux cshrc文件作用 Linux如何起进程/查看进程/杀进程 Linux 文件755 代表什么权限 Linux辅助线程 Linux进程间通信方法 pipeline,msgq... ...

  10. 设置putty标题栏显示固定信息

    设置好后,登录服务器后,发现标题栏又显示root@sit:/opt/ihome,没有显示成我设置的title内容.原因是: 在Terminal->Features中一定要勾选Disable re ...