博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift--动画效果
阅读量:7162 次
发布时间:2019-06-29

本文共 4196 字,大约阅读时间需要 13 分钟。

一、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 种过渡动画类型

  • none:无过渡动画效果
  • flipFromLeft:从左侧向右侧翻转
  • flipFromRight:从右侧向左侧翻转
  • curlUp:向上卷数翻页
  • curlDown:向下翻页

 代码如下:

//翻页动画 一 向左翻页        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()

 

转载于:https://www.cnblogs.com/hero11223/p/7611801.html

你可能感兴趣的文章
Linux下echo的用法
查看>>
python 基础
查看>>
PostgreSQL的访问控制(pg_hba.conf)
查看>>
Linux命令详解:一、pwd命令
查看>>
python 调用c++库出错:__gxx_personality_v0
查看>>
CentOS6.5安装zabbix2.4详细教程
查看>>
世界你好.
查看>>
常见socket错误代码
查看>>
solidity智能合约[27]-函数与函数重载
查看>>
html基础-CSS
查看>>
逸管家共享这么兴,财务人员可以共享吗?
查看>>
修改TextView中部分字体的大小及颜色
查看>>
阿里云发布Apsara SA系列混合云存储阵列
查看>>
/boot/目录下所有文件丢失的修复方法
查看>>
Spring的AOP逐层深入——AOP的基本原理(六)
查看>>
收集了50道基础的java面试题
查看>>
H3C 端口隔离
查看>>
云计算之openstack-newton版搭建(八)
查看>>
如何简单地理解 Python 中的 if __name__ == '__main__'
查看>>
我的友情链接
查看>>