swift中的动画

swift中的动画,第1张

概述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.frameUIView.animateWithDu

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.frameUIVIEw.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,200.0,40.0))self.vIEw.addSubvIEw(vIEw)vIEw.text = "缩放/淡入淡出"vIEw.textAlignment = .CentervIEw.adjustsFontSizetoFitWIDth = truevIEw.backgroundcolor = UIcolor.lightGraycolor()//let layer = vIEw.layer// 开始动画// 缩放let scaleAnimate = CABasicAnimation(keyPath: "transform.scale")scaleAnimate.fromValue = 1.0scaleAnimate.tovalue = 1.5scaleAnimate.autoreverses = truescaleAnimate.repeatCount = MAXfloatscaleAnimate.duration = 1.0// 淡入淡出let opaqueAnimate = CABasicAnimation(keyPath: "opacity")opaqueAnimate.fromValue = 0.1opaqueAnimate.tovalue = 1opaqueAnimate.autoreverses = trueopaqueAnimate.repeatCount = MAXfloatopaqueAnimate.duration = 1.0layer.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 = .CentervIEw3.adjustsFontSizetoFitWIDth = truevIEw3.backgroundcolor = UIcolor.lightGraycolor()//let layer3 = vIEw3.layer// CAAnimationGroup组合动画效果let rotate: CABasicAnimation = CABasicAnimation()rotate.keyPath = "tranform.rotation"rotate.tovalue = M_PIlet scale: CABasicAnimation = CABasicAnimation()scale.keyPath = "transform.scale"scale.tovalue = 0.0let 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.0animationGroup.fillMode = kCAFillModeForwardsanimationGroup.removedOnCompletion = falseanimationGroup.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,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 = falsekeyAnimate.repeatCount = 3keyAnimate.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,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 = falseanimation3.fillMode = kCAFillModeForwardsanimation3.duration = 0.2animation3.repeatCount = MAXfloat//layer3.addAnimation(animation3,forKey: nil)
总结

以上是内存溢出为你收集整理的swift中的动画全部内容,希望文章能够帮你解决swift中的动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存