在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、for循环创建4*4个view,然后对立面的所有view进行动画,这里列集中动画的效果: 1,旋转动画 for tile in backgrounds{ //现将数字块大小职位原始尺寸的1/10 tile.layer.setAffineTransform(CGAffineTransform(scaleX: 0.1,y: 0.1)) //设置动画效果,动画时间长度1秒 UIView.animate(withDuration: 1, delay: 0.01, options: [], animations: { }, completion: { (finished) in UIView.animate(withDuration: 1, animations: { //完成动画时,数字块复原 tile.layer.setAffineTransform(CGAffineTransform.identity) }) }) } 2,不透明到透明的效果 for tile in backgrounds { tile.alpha = 0 //设置动画效果,动画时间长度1秒 UIView.animate(withDuration: 1, delay: 0.01, options: [.curveEaseInOut], animations: { }, completion: { (finished) in UIView.animate(withDuration: 1, animations: { tile.alpha = 1 }) }) } 3,从小到大的效果 for tile in backgrounds { //现将数字快大小之前原始尺寸的1/10 tile.layer.setAffineTransform(CGAffineTransform(scaleX:0.1,y:0.1)) //设置动画效果,动画时间长度1秒 UIView.animate(withDuration: 1, delay: 0.01, options: [], animations: { tile.layer.setAffineTransform(CGAffineTransform(scaleX:1,y:1)) }, completion: { (finished) in UIView.animate(withDuration: 0.08, animations: { tile.layer.setAffineTransform(CGAffineTransform.identity) }) }) } 记录下三种动画效果
二、使用beginAnimations和commitAnimations方法来实现动画 beginAnimations:此方法开始一个动画快,调用commitAnimations结束一个动画块,并且动画块是允许嵌套的。 commitAnimations:此方法用于结束一个动画块,动画时在一个独立的线程中运行的,动画在生效时,所用应用程序不会中断。 beginAnimations和commitAnimations中间的代码中,我们可以设置各种动画的属性,比如持续时间,使用哪算阈值的动画效果等。 1)淡入、淡出、移动、改变大小动画 func animationAction() { //淡出动画 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) imgV.alpha = 0.0 UIView.commitAnimations() //淡入动画 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) imgV.alpha = 1.0 UIView.commitAnimations() //移动动画 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) imgV.center = CGPoint(x:250,y:250) UIView.commitAnimations() //大小调整动画 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) imgV.frame = CGRect(x:100,y:180,width:50,height:50) UIView.commitAnimations() }
UIViewAnimationTransition定义了 5 种过渡动画类型:
代码如下: //翻页动画 一 向左翻页 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.5) UIView.setAnimationTransition(.curlUp, for: self.view1!, cache: true) self.view.exchangeSubview(at: 1, withSubviewAt: 0) UIView.commitAnimations() //翻页动画 二 旋转 UIView.beginAnimations("animation", context: nil) UIView.setAnimationDuration(2.0) UIView.setAnimationCurve(.easeInOut) UIView.setAnimationTransition(.flipFromLeft, for: self.view2!, cache: false) self.view.exchangeSubview(at: 1, withSubviewAt: 0) UIView.commitAnimations() 跳转到其他页面的操作: let EleventhVC = EleventhViewController() let windows = UIApplication.shared.delegate?.window let nav = UINavigationController(rootViewController:EleventhVC) UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) UIView.setAnimationCurve(.easeInOut) UIView.setAnimationTransition(.curlUp, for: windows!!, cache: true) UIView.commitAnimations() windows??.rootViewController = nav 主界面做动画: UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(2.0) UIView.setAnimationCurve(.easeOut) UIView.setAnimationTransition(.curlDown, for: self.view, cache: false) UIView.commitAnimations()
|
请发表评论