全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

IOS swift中的动画的实例详解

IOS swift中的动画的实例详解

UIView的通用动画

let view = UIView(frame: CGRectMake(10.0, 10.0, 100.0, 40.0))
self.view.addSubview(view)
view.backgroundColor = UIColor.lightGrayColor()
// 位置改变
var frame = view.frame
UIView.animateWithDuration(0.6, delay: 2.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
      () -> Void in

      frame.origin.x = 200.0
      view.frame = frame

      }) {
        (finished:Bool) -> Void in

        UIView.animateWithDuration(0.6) {
          () -> Void in

          frame.origin.x = 10.0
          view.frame = frame
        }
}

CABasicAnimation核心动画

1、CABasicAnimation类只有三个属性:

fromValue:开始值 
toValue:结束值 
Duration:动画的时间 
repeatCount:重复次数

2、通过animationWithKeyPath键值对的方式设置不同的动画效果

transform.scale 
transform.scale.x 
transform.scale.y 
transform.rotation.z 
opacity 
margin 
zPosition 
backgroundColor 
cornerRadius 
borderWidth 
bounds 
contents 
contentsRect 
cornerRadius 
frame 
hidden 
mask 
masksToBounds 
opacity 
position 
shadowColor 
shadowOffset 
shadowOpacity 
shadowRadius
let view = UILabel(frame: CGRectMake((self.view.frame.size.width - 200.0) / 2, 10.0, 200.0, 40.0))
self.view.addSubview(view)
view.text = "缩放/淡入淡出"
view.textAlignment = .Center
view.adjustsFontSizeToFitWidth = true
view.backgroundColor = UIColor.lightGrayColor()
//
let layer = view.layer
// 开始动画
// 缩放
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")
// 组合动画
let view3 = UILabel(frame: CGRectMake(10.0, (currentView.frame.origin.y + currentView.frame.size.height + 10.0), 120.0, 40.0))
self.view.addSubview(view3)
view3.text = "组合动画"
view3.textAlignment = .Center
view3.adjustsFontSizeToFitWidth = true
view3.backgroundColor = UIColor.lightGrayColor()
//
let layer3 = view3.layer
// CAAnimationGroup组合动画效果
let rotate: CABasicAnimation = CABasicAnimation()
rotate.keyPath = "tranform.rotation"
rotate.toValue = M_PI
let scale: CABasicAnimation = CABasicAnimation()
scale.keyPath = "transform.scale"
scale.toValue = 0.0
let move: CABasicAnimation = CABasicAnimation()
move.keyPath = "transform.translation"
move.toValue = NSValue(CGPoint: CGPoint(x: 217, y: 230))
let animationGroup:CAAnimationGroup = CAAnimationGroup()
animationGroup.animations = [rotate, scale, move]
animationGroup.duration = 2.0
animationGroup.fillMode = kCAFillModeForwards
animationGroup.removedOnCompletion = false
animationGroup.repeatCount = MAXFLOAT
//
layer3.addAnimation(animationGroup, forKey: nil)

CAKeyframeAnimation关键帧动画

主要属性:

keyPath : 要设置的属性 
path : 路径 可用UIBezierPath(设置了path,将忽略values) 
duration : 动画时长 
repeatCount : 重复次数 
calculationMode : 动画计算方式 
values:每一个关键帧(设置了path,将忽略values) 
removedOnCompletion:执行完之后不删除动画 
fillMode:执行完之后保存最新的状态 
delegate:代理

let view = UILabel(frame: CGRectMake((self.view.frame.size.width - 200.0) / 2, 10.0, 200.0, 40.0))
self.view.addSubview(view)
view.text = "CAKeyframeAnimation动画"
view.backgroundColor = UIColor.lightGrayColor()
//
let layer = view.layer
// 位移
let keyAnimate = CAKeyframeAnimation(keyPath: "position")
// 设定关键帧
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 = 3
keyAnimate.duration = 6.0
//
keyAnimate.delegate = self
//
layer.addAnimation(keyAnimate, forKey: "position")
// 代理方法
override func animationDidStart(anim: CAAnimation) {
    print("开始")
}

override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
    print("结束")
}

let view3 = UILabel(frame: CGRectMake(10.0, (currentView.frame.origin.y + currentView.frame.size.height + 10.0), 60.0, 60.0))
self.view.addSubview(view3)
view3.text = "抖动"
view3.backgroundColor = UIColor.lightGrayColor()
//
let layer3 = view3.layer
// 抖动
let animation3 = CAKeyframeAnimation()
animation3.keyPath = "transform.rotation"
// (-M_PI_4 /90.0 * 5)表示-5度 。
let value31 = NSValue(CGPoint: CGPointMake(CGFloat(-M_PI_4 / 90.0 * 5.0), 0.0))
let value32 = NSValue(CGPoint: CGPointMake(CGFloat(M_PI_4 / 90.0 * 5.0), 0.0))
let value33 = NSValue(CGPoint: CGPointMake(CGFloat(-M_PI_4 / 90.0 * 5.0), 0.0))
animation3.values = [value31, value32, value33];
animation3.removedOnCompletion = false
animation3.fillMode = kCAFillModeForwards
animation3.duration = 0.2
animation3.repeatCount = MAXFLOAT
//
layer3.addAnimation(animation3, forKey: nil)

 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS  # swift中的动画  # 动画的实例详解  # Swift  # 动画  # ios基于MJRefresh实现上拉刷新和下拉加载动画效果  # 利用iOS开发实现翻转扑克牌动画的方法  # iOS中利用CAEmitterLayer实现粒子动画详解  # iOS 下拉刷新动画的实现实例  # iOS 实现简单的加载等待动画示例(思路与实现)  # IOS 中动画的暂停与继续播放的详解  # 如有  # 希望能  # 谢谢大家  # 时长  # 键值  # 疑问请  # contentsRect  # bounds  # borderWidth  # contents  # masksToBounds  # position  # hidden  # mask  # cornerRadius  # transform  # scale  # repeatCount  # animationWithKeyPath  # margin 


相关文章: GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  建站之星导航菜单设置与功能模块配置全攻略  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  建站主机功能解析:服务器选择与快速搭建指南  微信推文制作网站有哪些,怎么做微信推文,急?  如何在IIS7中新建站点?详细步骤解析  简单实现Android验证码  北京网站制作公司哪家好一点,北京租房网站有哪些?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何在IIS管理器中快速创建并配置网站?  TestNG的testng.xml配置文件怎么写  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何高效完成独享虚拟主机建站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何通过山东自助建站平台快速注册域名?  如何用腾讯建站主机快速创建免费网站?  定制建站如何定义?其核心优势是什么?  焦点电影公司作品,电影焦点结局是什么?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  Swift中switch语句区间和元组模式匹配  北京制作网站的公司,北京铁路集团官方网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何在腾讯云服务器快速搭建个人网站?  建站168自助建站系统:快速模板定制与SEO优化指南  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  ,巨量百应是干嘛的?  建站主机解析:虚拟主机配置与服务器选择指南  微信h5制作网站有哪些,免费微信H5页面制作工具?  山东云建站价格为何差异显著?  网站制作员失业,怎样查看自己网站的注册者?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  *服务器网站为何频现安全漏洞?  建站之星后台管理系统如何操作?  家具网站制作软件,家具厂怎么跑业务?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何自定义建站之星网站的导航菜单样式?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  ,如何利用word制作宣传手册?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何选择网络建站服务器?高效建站必看指南  如何通过cPanel快速搭建网站?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。