IOS swift中的动画的实例详解
IOSswift中的动画的实例详解
UIView的通用动画
letview=UIView(frame:CGRectMake(10.0,10.0,100.0,40.0)) self.view.addSubview(view) view.backgroundColor=UIColor.lightGrayColor() //位置改变 varframe=view.frame UIView.animateWithDuration(0.6,delay:2.0,options:UIViewAnimationOptions.CurveEaseInOut,animations:{ ()->Voidin frame.origin.x=200.0 view.frame=frame }){ (finished:Bool)->Voidin UIView.animateWithDuration(0.6){ ()->Voidin 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
letview=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() // letlayer=view.layer //开始动画 //缩放 letscaleAnimate=CABasicAnimation(keyPath:"transform.scale") scaleAnimate.fromValue=1.0 scaleAnimate.toValue=1.5 scaleAnimate.autoreverses=true scaleAnimate.repeatCount=MAXFLOAT scaleAnimate.duration=1.0 //淡入淡出 letopaqueAnimate=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")
//组合动画 letview3=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() // letlayer3=view3.layer //CAAnimationGroup组合动画效果 letrotate:CABasicAnimation=CABasicAnimation() rotate.keyPath="tranform.rotation" rotate.toValue=M_PI letscale:CABasicAnimation=CABasicAnimation() scale.keyPath="transform.scale" scale.toValue=0.0 letmove:CABasicAnimation=CABasicAnimation() move.keyPath="transform.translation" move.toValue=NSValue(CGPoint:CGPoint(x:217,y:230)) letanimationGroup: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:代理
letview=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() // letlayer=view.layer //位移 letkeyAnimate=CAKeyframeAnimation(keyPath:"position") //设定关键帧 letvalue0=NSValue(CGPoint:layer.position) letvalue1=NSValue(CGPoint:CGPointMake(layer.position.x,layer.position.y+200)) letvalue2=NSValue(CGPoint:CGPointMake(layer.position.x-150,layer.position.y+200)) letvalue3=NSValue(CGPoint:CGPointMake(layer.position.x-150,layer.position.y)) letvalue4=NSValue(CGPoint:layer.position) //速度曲线 lettf0=CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut) lettf1=CAMediaTimingFunction(name:kCAMediaTimingFunctionLinear) lettf2=CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseIn) lettf3=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")
//代理方法 overridefuncanimationDidStart(anim:CAAnimation){ print("开始") } overridefuncanimationDidStop(anim:CAAnimation,finishedflag:Bool){ print("结束") }
letview3=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() // letlayer3=view3.layer //抖动 letanimation3=CAKeyframeAnimation() animation3.keyPath="transform.rotation" //(-M_PI_4/90.0*5)表示-5度。 letvalue31=NSValue(CGPoint:CGPointMake(CGFloat(-M_PI_4/90.0*5.0),0.0)) letvalue32=NSValue(CGPoint:CGPointMake(CGFloat(M_PI_4/90.0*5.0),0.0)) letvalue33=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)
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!