|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以后的学习中,一定要多问自己几个为什么,多向有经验的人请教,不要碍于面子。我看重苹果未来的发展,所以我一定要坚持下去,也许别人很容易就学会了的工具,我要学很久,但没关系,因为我始终相信勤能补拙这句话!在iOS开辟中,要做一个动画效果,我们会用到CAKeyframeAnimation。这个库供应了一些对frame动画的把持,什麽是frame动画?frame动画就比如电视动画那样,由一格一格的丹青(也能够想像成frame)组成,疾速播放丹青便成了动画。在CAKeyframeAnimation的观点是一样,你只必要供应keyframe的信息,程序会主动完成keyframe之间的”丹青”。假如人人有效过adobeFlash这工具,实际上是同等motion/shapetween。好吧!举个例子对照分明分明。假如想对一个图形做一个弹出的动画,用CAKeyframeAnimation能够写成- 1234567891011121314151617181920
复制代码- CAKeyframeAnimation*boundsOvershootAnimation=[CAKeyframeAnimationanimationWithKeyPath:@"bounds.size"];CGSizestartingSize=CGSizeZero;CGSizetargetSize=CGSizeMake(100,100);CGSizeovershootSize=CGSizeMake(120,120);CGSizeundershootSize=CGSizeMake(80,80);NSArray*boundsValues=[NSArrayarrayWithObjects:[NSValuevalueWithCGSize:startingSize],[NSValuevalueWithCGSize:targetSize],[NSValuevalueWithCGSize:overshootSize],[NSValuevalueWithCGSize:undershootSize],[NSValuevalueWithCGSize:targetSize],nil];[boundsOvershootAnimationsetValues:boundsValues];NSArray*times=[NSArrayarrayWithObjects:[NSNumbernumberWithFloat:0.0f],[NSNumbernumberWithFloat:0.5f],[NSNumbernumberWithFloat:0.8f],[NSNumbernumberWithFloat:0.9f],[NSNumbernumberWithFloat:1.0f],nil];[boundsOvershootAnimationsetKeyTimes:times];boundsOvershootAnimation.duration=1.0;
复制代码 这个弹出的动画包括了5个keyframe,目标是令弹出带点跳动的感到。[boundsOvershootAnimationsetValues:boundsValues]这一行代码就设定了这动画的keyframe。另外一个主要的元素就是工夫,CAKeyframeAnimation供应了keyframe工夫的把持,假如不设定便会以直线性开展。而这动画会以先慢後快的情势呈现,为什麽呢?请看[boundsOvershootAnimationsetKeyTimes:times]这一段。动画长一秒,由0-0.5秒会举行startingSize到targetSize的动画,0.5-0.8秒会举行targetSize到overshootSize的动画。云云类推就会做出先慢後快的效果。
CAKeyframeAnimation还供应了其他办法往把持keyframe,以下是一个通明淡出的动画。- CABasicAnimation*opacityAnimation=[CABasicAnimationanimationWithKeyPath:@"opacity"];opacityAnimation.fromValue=[NSNumbernumberWithFloat:1.0f];opacityAnimation.toValue=[NSNumbernumberWithFloat:0.0f];opacityAnimation.timingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn]];//EaseIncurve//opacityAnimation.timingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];//EaseOutcurve//opacityAnimation.timingFunction=[CAMediaTimingFunctionfunctionWithControlPoints:1.0:0.0:1.0:0.1];//Beziercurve
复制代码 opacityAnimation.timingFunction是用来把持动画线性开展。个中[CAMediaTimingFunctionfunctionWithControlPoints:1.0:0.0:1.0:0.1]是一个贝塞尔曲线的把持办法。这也能够令动画做到先慢後快或先快後慢的了局。你会问,我安知道效果会如何?这里有一个图表化的工具申明数字线性关Shttp://netcetera.org/camtf-playground.html
很多框架是用C写的学习iOS开发基础可以按照下面两个方面学基础(原料钢铁塑料) |
|