IOS-笔记16(Animation)
来源:互联网 发布:java 接口开发demo 编辑:程序博客网 时间:2024/06/06 07:53
UIView的成员的动画;View之间转换的动画;Core Animation:底层的,强大的动画框架;Dynamic Animation:基于物理引擎的动画。
UIView的成员的动画:
一个调用即可,动画在另一个线程执行,这段设置执行过后会立即执行之后的代码:
UIView.animateWithDuration(3.0,//执行时间 delay: 2.0,//等待时间 options: UIViewAnimationOptions.CurveEaseInOut,//动画效果选择 animations: { () -> Void in//设置你的动画 //在执行这句话时这个属性立即变为0,你所看到的动画只是表象 self.imageView.alpha = 0.0 self.imageView.transform.tx = 20.0 //self.imageView.frame.height }, completion: { (Bool) -> Void in//动画执行完后,或被其他动画打断后执行,布尔值会告诉你是否完成这次动画 if Bool { self.imageView.alpha = 1.0 } })
另一种:
UIView.transitionWithView(self.imageView, duration: 2, options: UIViewAnimationOptions.TransitionFlipFromLeft, animations: { () -> Void in self.image = UIImage(named: "1") }, completion: { (Bool) -> Void in })还有一种视图层级的:
UIView.transitionFromView(fromView: UIView, toView: UIView, duration: NSTimeInterval, options: UIViewAnimationOptions, completion: { (Bool) -> Void in //code })
Dynamic Animation
UIGravityBehavior,UIAttachmentBehavior,UICollisionBehavior,UISnapBehavior,UIPushBehavior,UIDynamicItemBehavior。UIDynamicBehavior是他们的父类。它有一个属性叫action,这是一个闭包函数,每个动画在执行时都会调用这个函数,如果一个对象在持续加速,那么就会持续调用这个函数。
以UIGravityBehavior为例,首先初始化一个UIDynamicAnimator和一个Behavior:
let gravity = UIGravityBehavior() //var animator: UIDynamicAnimator = UIDynamicAnimator(referenceView: gameView) //这句话会报错因为现在我们还处在构造这个类的过程中,在构造完成前我们不能访问属性和方法 lazy var animator: UIDynamicAnimator = { return UIDynamicAnimator(referenceView: self.gameView) }()//调用animator时要注意gameView一定已经初始化好了
接着将Behavior加入animator,再将想要执行这个动画的物体加入Behavior:
animator.addBehavior(gravity) <p class="p1"><span class="s1"> gravity</span><span class="s2">.</span><span class="s3">addItem</span><span class="s2">(dropView)</span></p>如果你有很多个Behavior要添加,可以自己建一个UIDynamicBehavior的子类,通过复写初始化函数的方法添加子behavior:
override init() { super.init() addChildBehavior(gravity) addChildBehavior(collider) }这样写一个公共方法就可以完成多个动画的添加:
func addDrop(drop: UIView){ dynamicAnimator?.referenceView?.addSubview(drop) gravity.addItem(drop) collider.addItem(drop) }如果你需要知道动画是否停止,或者是否即将要继续,你需要将自己设为代理并实现相应的方法:
animator.delegate = self
0 0
- IOS-笔记16(Animation)
- iOS:Core Animation笔记(1)
- IOS学习笔记(三)UIView animation
- IOS Animation学习笔记
- IOS-动画Animation
- IOS Animation学习 (一)Animation初探
- iOS 笔记八:Core Animation、Dynamic Animation、 UIDynamicBehavoir
- iOS笔记 页面切换 CATransition Animation动画
- iOS开发笔记>> Core Animation(核心动画)
- iOS Core Animation笔记--UIView和CALayer
- iOS-Core-Animation-Advanced-Techniques笔记
- iOS学习笔记60-IOS动画Core Animation详解
- iOS小结(三)animation blocks VS CALayer animation
- iOS学习笔记59-UIView自带动画和核心动画(Core Animation)
- Animation 笔记
- IOS Core Animation Advanced Techniques的学习笔记(一)
- IOS Core Animation Advanced Techniques的学习笔记(二)
- IOS Core Animation Advanced Techniques的学习笔记(三)
- Download image file from JAX-RS
- hdu 5037 Frog(贪心)
- Google Earth For Javascript 谷歌地球删除所有标记
- php调用短信接口,php发送短信接口
- 提供语义分析和分词服务
- IOS-笔记16(Animation)
- 迭代模式
- 开发常用工具
- 为什么要使用SLF4J而不是Log4J
- Ruby第三天作业
- linux常用命令(3):pwd命令
- C++ Jsoncpp源代码编译与解析Json
- 字符串组合问题(无重复)
- 【Memphis】非旋转Treap及可持久化[Merge,Split]