swift - 歌曲列表动画
// ViewController.swift
// songAnimation
//
// Created by su on 15/12/10.
// Copyright © 2015年 tian. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let windowWidth = UIScreen.mainScreen().bounds.size.width
let frameRect = self.view.frame
//创建背景
var bacgroundView = UIImageView(frame: frameRect)
bacgroundView.image = UIImage(named: "background")
self.view.addSubview(bacgroundView)
let arrowView = UIImageView(frame: CGRect(x: windowWidth, y: 64, width: windowWidth, height: 45))
arrowView.image = UIImage(named: "arrow")
self.view.addSubview(arrowView)
let ministryView = UIImageView(frame: CGRect(x: windowWidth, y: 110, width: windowWidth, height: 26))
ministryView.image = UIImage(named: "ministry")
self.view.addSubview(ministryView)
let addButon = UIButton(frame: CGRect(x: windowWidth, y: 160, width: windowWidth, height: 28))
addButon.setImage(UIImage(named: "add-button"), forState: UIControlState.Normal)
//设置按钮的高亮状态
addButon.setImage(UIImage(named: "add-button-pressed"), forState: UIControlState.Highlighted)
self.view.addSubview(addButon)
//歌曲列表
let firstRow = UIImageView(frame: CGRect(x: windowWidth, y: 190, width: windowWidth, height: 80))
firstRow.image = UIImage(named: "1st-row")
self.view.addSubview(firstRow)
let secondRow = UIImageView(frame: CGRect(x: windowWidth, y: 190 + 80 , width: windowWidth, height: 80))
secondRow.image = UIImage(named: "2nd-row")
self.view.addSubview(secondRow)
let thirdRow = UIImageView(frame: CGRect(x: windowWidth, y: 190 + 160, width: windowWidth, height: 38))
thirdRow.image = UIImage(named: "3rd-row")
self.view.addSubview(thirdRow)
let fourRow = UIImageView(frame: CGRect(x: windowWidth, y: 190 + 240, width: windowWidth, height: 80))
fourRow.image = UIImage(named: "4th-row")
self.view.addSubview(fourRow)
let fiveRow = UIImageView(frame: CGRect(x: windowWidth, y: 190 + 320, width: windowWidth, height: 80))
fiveRow.image = UIImage(named: "5th-row")
self.view.addSubview(fiveRow)
//启动延时时间
let initaDelay = 1.0
//间隔时间
let stutter = 0.15
//动画执行
let duration = 1.1
//箭头动画
UIView.animateWithDuration(duration, delay: initaDelay, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
arrowView.frame = CGRect(x: 0, y: 64, width: windowWidth, height: 45)
}, completion: nil)
//ministry
UIView.animateWithDuration(duration, delay: initaDelay + 1 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
ministryView.frame = CGRect(x: 0, y: 110, width: windowWidth, height: 26)
}, completion: nil)
//add song
UIView.animateWithDuration(duration, delay: initaDelay + 2 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
addButon.frame = CGRect(x: 0, y: 160, width: windowWidth, height: 45)
}, completion: nil)
//歌曲列表
UIView.animateWithDuration(duration, delay: initaDelay + 3 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
firstRow.frame = CGRect(x: 0, y: 190, width: windowWidth, height: 80)
}, completion: nil)
UIView.animateWithDuration(duration, delay: initaDelay + 4 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
secondRow.frame = CGRect(x: 0, y: 190 + 80, width: windowWidth, height: 80)
}, completion: nil)
UIView.animateWithDuration(duration, delay: initaDelay + 5 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
thirdRow.frame = CGRect(x: 0, y: 190 + 160, width: windowWidth, height: 80)
}, completion: nil)
UIView.animateWithDuration(duration, delay: initaDelay + 6 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
fourRow.frame = CGRect(x: 0, y: 190 + 240, width: windowWidth, height: 80)
}, completion: nil)
UIView.animateWithDuration(duration, delay: initaDelay + 7 * stutter, usingSpringWithDamping: 0.6, initialSpringVelocity: 0, options: UIViewAnimationOptions.AllowAnimatedContent, animations: { () -> Void in
//运动闭包
fiveRow.frame = CGRect(x: 0, y: 190 + 320, width: windowWidth, height: 80)
}, completion: nil)
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
swift - 歌曲列表动画的更多相关文章
- Swift实战-豆瓣电台(四)歌曲列表的展现
观看地址 http://v.youku.com/v_show/id_XNzMwNDE0OTA4.html 这节的主要内容是如何利用cell展现获取到的数据. 首先申明两个数组来储存我们获取到的数据 v ...
- 【音乐App】—— Vue-music 项目学习笔记:歌曲列表组件开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 当前歌曲播放列表 添加歌曲 ...
- jQuery演示10种不同的切换图片列表动画效果
经常用到的图片插件演示jQuery十种不同的切换图片列表动画效果 在线演示 下载地址 实例代码 <!DOCTYPE html> <html lang="en" c ...
- jQuery演示10种不同的切换图片列表动画效果以及tab动画演示 2
很常用的一款特效纯CSS完成tab实现5种不同切换对应内容效果 实例预览 下载地址 实例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
- ANDROID_MARS学习笔记_S01原始版_020_Mp3player001_歌曲列表
一.项目设计 二.歌曲列表简介 1.利用java.net.HttpURLConnection以流的形式下载xml文件为String 2.自定义ContentHandler-->Mp3ListCo ...
- Android VLC播放器二次开发3——音乐播放(歌曲列表+歌词同步滚动)
今天讲一下对VLC播放器音频播放功能进行二次开发,讲解如何改造音乐播放相关功能.最近一直在忙着优化视频解码部分代码,因为我的视频播放器需要在一台主频比较低的机器上跑(800M主频),所以视频解码能力受 ...
- Swift - transform.m34动画示例
Swift - transform.m34动画示例 效果 源码 https://github.com/YouXianMing/Swift-Animations // // CATransform3DM ...
- Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...
- Android 自定义 ListView 显示网络上 JSON 格式歌曲列表
本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...
随机推荐
- wiremock 模拟服务接口提供前端使用
前后端分离同步开发时,如果前端需要等后端把接口都开发完了再去动工的话,项目周期会拉长. 以前开发时,一般前期是先把接口文档写的差不多了,要么是让前端自己构造模拟数据,要么是后端在开个控制器专门提供模拟 ...
- MySQL建表规范与常见问题 (go)
一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确 ...
- MoveWindow() SetWindowPos()的区别于联系
敲代码时,突然发现有一个背景图片无法显示,百思不得其解,最终发现是MoveWindow() SetWindowPos()这两个函数的使用不当造成的. 这里把这两个函数的前世今生给分析一下. 先看Mov ...
- "废物利用"也抄袭——“完全”DIY"绘图仪"<一、准备工作>
上一个光驱造已经解体若干天了,因为事情很多arduino也不太熟悉,直到今天才做出了一个可以用的样本.当然,上位机和下位机代码都写好了,可以正常工作,但是由于电路知识还是中学那点没还给老师的,加以各种 ...
- GREENPLUM简介
什么是GREENPLUM? 对于很多IT人来说GREENPLUM是个陌生的名字.简单的说它就是一个与ORACLE, DB2一样面向对象的关系型数据库.我们通过标准的SQL可以对GP中的数据进行访问存取 ...
- appium -ios 真机连接 环境搭建
补充点一: 安装ios-deploynpm install -g ios-deploy 安装不了报错.! 后来找了找,发现sudo npm install -g ios-deploy --unsafe ...
- ubuntu安装了mysql 但是编译报错 mysql.h: No such file or directory
在Ubuntu体系中,已经安装了mysql,即应用sudo apt-get install mysql-server mysql-client 但是用C编译mysql数据库时,报错fatal erro ...
- Java利用ScriptEngineManager对计算公式的支持
1.ScriptEngineManager是JDK6提出的相关方法,这方式的主要目的就是用来对脚本语言的处理.这里只是简单介绍一下对我们常用的数学公式的应用. 2.ScriptEngineManage ...
- logger示例
胜哥版 打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态.Python标准库提供了logging模块,让我们也可以方便的在Python中打印日志. 日志介绍 完整的使用方 ...
- tcpdump查看某个端口数据
tcpdump -i eth0 -nn -A port tcpdump src