IOS-swift 动画01
来源:互联网 发布:mac大写字母自动切换 编辑:程序博客网 时间:2024/05/20 04:14
今天开始写一下 关于IOS动画的相关内容
正如大家所了解的 IOS中动画是加载在UIVIEW 的layer上的
进而通过Core Graphics 框架 进行渲染 也就是说我们给layer 添加动画时并不是直接对layer进行修改操作的
layer中包含两个 同行的layer层次 分别是
presentationLayer 呈现: 动画进行时的显示状态. presentationLayer 的属性和动画运行过程中界面上看到的是一致的
可用 layer.presentationLayer() 进行获取
modelLayer 模型: 用于显示的 可用 layer.modelLayer() 进行获取
CABasicAnimation 基础动画上代码
//// ViewController.swift// AnimationStd//// Created by 鲍东升 on 16/5/18.// Copyright © 2016年 鲍东升. All rights reserved.//import UIKitclass ViewController: UIViewController { //MARK: - PropertyList var playView1:UIView? var playView2:UIView? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. prepareUI() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func prepareUI(){ playView1 = UIView(frame: CGRect(x: 100, y: 200, width: 40, height: 40)) playView2 = UIView(frame: CGRect(x: 100, y: 300, width: 40, height: 40)) playView1?.backgroundColor = UIColor.grayColor() playView2?.backgroundColor = UIColor.grayColor() } func addLineAnimationFor(view1:UIView,view2:UIView,offset:CGFloat)->(view1:UIView,view2:UIView) { //支持的 KeyPath //https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Key-ValueCodingExtensions/Key-ValueCodingExtensions.html let centerX:CGFloat = view1.center.x let lineAnimation:CABasicAnimation = CABasicAnimation(keyPath: "position.x") /* * 设置差值 :fromValue toValue byValue 最多设置两项 * 不同组合所生成的效果也不同 * 当 fromValue 和 toValue 都不为空. 从 fromValue 到 toValue 进行差值. * 当 fromValue 和 byValue 都不为空. 从 fromValue 到 (fromValue + byValue) 进行差值. * 当 byValue 和 toValue 都不为空. 从 (toValue - byValue) 到 toValue 进行差值. * 当 fromValue 不为空. 从fromValue 到 当前显示的属性值 进行差值. * 当 toValue 不为空. 从presentation layer(展示的layer)的keyPath 的值 到 toValue 进行差值. * 当 byValue 不为空. 从presentation layer(展示的layer)的keyPath 的值 到 这个值和byValue之和 进行差值. * 当 全部为空. 从presentation layer(展示的layer)的keyPath 的前一个值 到 presentation layer(展示的layer)的keyPath 的当前值进行差值. */ //from -> to 方式 lineAnimation.fromValue = centerX lineAnimation.toValue = centerX+offset //byValue 方式// lineAnimation.byValue = offset lineAnimation.duration = 1//second //save last position //type1: // 带来更多内存开销 有额外绘画 //fillMode : /* * kCAFillModeRemoved 默认 动画结束后恢复至之前状态 * kCAFillModeForwards . 动画结束后保持最后状态 * kCAFillModeBackwards . 动画开始前显示开始状态(frame) * kCAFillModeBoth . 兼顾kCAFillModeForwards和kCAFillModeBackwards */ lineAnimation.fillMode = kCAFillModeForwards lineAnimation.removedOnCompletion = false //type2:// view.center = CGPoint(x: view.center.x+offset, y: view.center.y) view1.layer.addAnimation(lineAnimation, forKey: "lineAnimation") //延迟0.5秒 由于动画添加的时候会被复制 所以VIEW1的动画不受影响 // beginTime 相对于父级对象的开始时间 默认为0 lineAnimation.beginTime = CACurrentMediaTime()+0.5 view2.layer.addAnimation(lineAnimation, forKey: "lineAnimation") return (view1,view2) } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { let result = addLineAnimationFor(playView1!,view2: playView2!,offset: 100) view.addSubview(result.view1) view.addSubview(result.view2) }}
参考:https://www.objc.io/issues/12-animations/animations-explained/
0 0
- IOS-swift 动画01
- [Swift]iOS动画:下载动画
- iOS UIView动画详解(Swift)
- swift ios转场动画详解
- IOS-swift 动画02 CAKeyframeAnimation
- IOS-swift 动画03 CAAnimationGroup
- iOS 卡片转场动画 Swift
- IOS-swift 动画04 CALayer属性动画
- IOS-swift 动画05 CALayer绘图动画
- [Swift]iOS动画:登录按钮动画
- Swift实现iOS中的动画示例
- swift ios 平移动画(8种方式)
- iOS swift动画和特效专题
- iOS Layer动画 一(Swift)
- iOS Layer动画 二(Swift)
- Swift开发:iOS那些简单的动画
- iOS Swift 简单实现Loading动画
- swift开发ios笔记2--汤姆猫动画(帧动画)
- lightoj 1030 Discovering Gold
- ArchLinux折腾记
- 基于C语言的动态沙漏
- 斜率优化 Snowdrop修长廊 scu dp练习B题
- js 一段代码获取元素class样式
- IOS-swift 动画01
- HDU 1023 Train Problem II Catalan数(卡特兰数)
- C++第5次上机实验
- 深入java学习之java面向对象程序设计
- 关于unity 双重ScrollRect的水平移动与垂直移动叠加处理
- PC上安装交叉编译器(arm-linux-gcc 4.9.3)
- linux下个文件夹作用
- bzoj4592: [Shoi2015]脑洞治疗仪
- linux中class_create和class_register说明