Swift之动画总结
UIView动画个人笔记,代码简单,不过多赘述。
1.定义三个View
@IBOutlet weak var mFirstView: UIView!
@IBOutlet weak var mSecondView: UIView!
//var mOriginFrame: CGRect! //记录view的初始位置
var mFirstSubView: UIView!
2.初始化相关信息
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.mOriginFrame = self.mFirstView.frame
self.mFirstSubView = UIView(frame: CGRect(x: 5, y: 5, width: 50, height: 50))
self.mFirstSubView.backgroundColor = UIColor.blackColor()
self.mFirstView.addSubview(self.mFirstSubView)
}
3.实现相关动画
//简单Y轴平移动画
func basicAnimate() {
UIView.animateWithDuration(1) { () -> Void in
self.mFirstView.frame.origin.y += 100
}
}
//可配置option信息动画
func optionAnimate() {
UIView.animateWithDuration(3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.mFirstView.frame.origin.x += 100
//Nest重写父层option属性
UIView.animateWithDuration(3, delay: 0, options: [UIViewAnimationOptions.OverrideInheritedOptions, UIViewAnimationOptions.OverrideInheritedCurve, UIViewAnimationOptions.CurveEaseOut], animations: { () -> Void in
self.mSecondView.frame.origin.x += 100
}, completion: { (finished:Bool) -> Void in
})
}) { (finished: Bool) -> Void in
}
}
//试图动画操作子视图
func operateSubview() {
UIView.transitionWithView(self.mFirstView, duration: 1, options: [UIViewAnimationOptions.TransitionCrossDissolve, UIViewAnimationOptions.AllowAnimatedContent], animations: { () -> Void in
self.mFirstSubView.frame.origin.x += 150
}) { (finished: Bool) -> Void in
}
}
//替换视图动画
func replaceView() {
let view = UIView(frame: CGRect(x: 21, y: 150, width: 240, height: 60))
view.backgroundColor = UIColor.magentaColor()
UIView.transitionFromView(self.mFirstView, toView: view, duration: 1, options: UIViewAnimationOptions.TransitionCurlUp) { (finished:Bool) -> Void in
}
}
//----------------------核心动画----------------------
/**
*显式动画
*/
func newBasicAnimate() {
//创建一个imageview视图
let imgView = UIImageView(image: UIImage(named: "img"))
imgView.frame = CGRect(x: 150, y: 200, width: 100, height: 100)
self.view.addSubview(imgView)
//1.选定角色
let layer = imgView.layer
layer.cornerRadius = 5.0
//2.写剧本
let scaleAnimate = CABasicAnimation(keyPath: "transform.scale")
scaleAnimate.fromValue = 1.0
scaleAnimate.toValue = 1.5
scaleAnimate.autoreverses = true
scaleAnimate.repeatCount = MAXFLOAT
scaleAnimate.duration = 1.0
//第二个剧本
let opaqueAnimate = CABasicAnimation(keyPath: "opacity")
opaqueAnimate.fromValue = 0.1
opaqueAnimate.toValue = 1
opaqueAnimate.autoreverses = true
opaqueAnimate.repeatCount = MAXFLOAT
opaqueAnimate.duration = 1.0
//把剧本交给演员开始动画
layer.addAnimation(scaleAnimate, forKey: "scaleAnimate")
layer.addAnimation(opaqueAnimate, forKey: "opacityAnimate")
}
/**
*关键帧动画
*/
func newKeyFrameAniamte() {
//创建一个imageview视图
let imgView = UIImageView(image: UIImage(named: "img"))
imgView.frame = CGRect(x: 200, y: 200, width: 40, height: 40)
self.view.addSubview(imgView)
//1.选定角色
let layer = imgView.layer
layer.cornerRadius = 5.0
//2.写剧本
let keyAnimate = CAKeyframeAnimation(keyPath: "position")
//3.设定关键帧
let value0 = NSValue(CGPoint: layer.position)
let value1 = NSValue(CGPoint: CGPointMake(layer.position.x, layer.position.y + 200))
let value2 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y + 200))
let value3 = NSValue(CGPoint: CGPointMake(layer.position.x - 150, layer.position.y))
let value4 = NSValue(CGPoint: layer.position)
//速度曲线
//let tf0 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
//let tf1 = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
//let tf2 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
//let tf3 = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
//keyAnimate.timingFunctions = [tf0, tf1, tf2, tf3]
//每段执行的时间
//keyAnimate.keyTimes = [0.0, 0.5, 0.6, 0.7, 1]
keyAnimate.values = [value0, value1, value2, value3, value4]
keyAnimate.autoreverses = false
keyAnimate.repeatCount = MAXFLOAT
keyAnimate.duration = 6.0
layer.addAnimation(keyAnimate, forKey: "keyAnimate")
}
附:CABasicAnimation的KeyPath
透明度为:opacity
其余如下:
Swift之动画总结的更多相关文章
- iOS开发——动画篇Swift篇&动画效果的实现
Swift - 动画效果的实现 在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimation ...
- Swift 带有动画效果的TabBarItem
额...貌似挺长时间没有总结新知识了,最近在看swift,之前swift刚出来的时候大体看了一遍,后来时间长了没看加之swift2.0做了比较大的调整,公司项目也不是用swift写的,也就没怎么看了, ...
- Swift动画编程指南-01 简介
大家好,我是老镇,这段时间家里和工作上发生了很多的事情,所以很长一段时间都没有出来搞什么小动作了.在接下来的一段时间内我会制作一些列关于使用Swift进行动画编程的视频,希望和大家胃口. 在iOS的世 ...
- Swift coreAnimation 加计时器写的游戏《飞机大战》
近期在学习swift的动画和图层.就用现学的东西写了个游戏,基本思想 基本功能都实现了.图片都是在网上找得.希望能帮助大家更好的理解动画和图层. 声明下,我是刚開始学习的人,代码写的不好.大家应该都能 ...
- ios项目里扒出来的json文件
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
- 谈谈UIView的几个layout方法
谈谈UIView的几个layout方法-layoutSubviews.layoutIfNeeded.setNeedsLayout... 最近在学习swift做动画,用到constraint的动画, ...
- iOS - AutoLayout
前言 NS_CLASS_AVAILABLE_IOS(6_0) @interface NSLayoutConstraint : NSObject @available(iOS 6.0, *) publi ...
随机推荐
- 【Codeforces Round #427 (Div. 2) B】The number on the board
[Link]:http://codeforces.com/contest/835 [Description] 原本有一个数字x,它的各个数码的和原本是>=k的; 现在这个数字x,在不改变位数的情 ...
- CodeForce 424C Magic Formulas
这个题就是求出给的公式的结果. 仅仅要知道异或运算满足交换律跟结合律即可了.之后就是化简公式. #include<map> #include<string> #include& ...
- Rsync 指令的使用方法
RsyncLinux版下载:http://rsync.samba.org/download.htmlWindows版下载:https://www.itefix.no/i2/cwrsync-get 选( ...
- 理性分析 C++(-O2) 和 JS 的性能差距
laptop: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz.. Test1: 最后一行:时间(ms) #pragma GCC optimize("O2& ...
- 关于大数据项目创建时所需setting.xml(博主推荐)
我目前,收录经常用的是,这两个版本,这个根据博主我本人的经验之谈,最为稳定和合理的. 注意:我的本地路径是在D:/SoftWare/maven/repository,大家自己改为你们自己的即可. ...
- javafx image button
public class EffectTest extends Application { public static void main(String[] args) { launch(args); ...
- BZOJ2329: [HNOI2011]括号修复(Splay)
解题思路: Replace.Swap.Invert都可以使用Splay完美解决(只需要解决一下标记冲突就好了). 最后只需要统计左右括号冲突就好了. 相当于动态统计最大前缀合和最小后缀和. 因为支持翻 ...
- VB 宏+mysql解决EXCEL表格实现自动化处理
1.表格模板自动建立源码 Sub opp()Dim myPath$, myFile$, AK As WorkbookApplication.ScreenUpdating = FalsemyPath = ...
- leaf cell
leaf cell是否可以理解为设计中与或非门等这些基本的单元?
- Android RingtoneManager 铃声管理
package com.Aina.Android; import java.io.File; import android.app.Activity; import android.content.I ...