2012-07-25 38 views
3

我仍然在学习UIAnimations,刚刚进入它,我都在,我不知道如何解决问题绊倒了。我看过你获得新高分的比赛,并且将新的高分添加到旧的高分中,并且他们让数字呈现出上下的动态。它看起来非常酷,视觉上安抚。动画的UILabel与数字

任何人都可以向我解释这是怎么完成的?我很抱歉,如果这个问题很容易解决,就像我说我仍然在学习/完美的动画。

在此先感谢

回答

9

我从post sergio suggested you look at那里得到了代码,但是注意到安舒提到你想要上下动画而不是淡入/淡出动画,所以我改变了代码以符合你的想法。在这里你去:

// Add transition (must be called after myLabel has been displayed) 
CATransition *animation = [CATransition animation]; 
animation.duration = 1.0; //You can change this to any other duration 
animation.type = kCATransitionMoveIn;  //I would assume this is what you want because you want to "animate up or down" 
animation.subtype = kCATransitionFromTop; //You can change this to kCATransitionFromBottom, kCATransitionFromLeft, or kCATransitionFromRight 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
[myLabel.layer addAnimation:animation forKey:@"changeTextTransition"]; 

// Change the text 
myLabel.text = newText; 

希望这会有所帮助!

+0

非常感谢!将接受 – 2012-07-25 23:45:24

+0

@AlexG - 没问题。您可能需要稍微改动一下参数,但应该可以正常工作。 – pasawaya 2012-07-25 23:46:00

2

人们可以纠正我,如果我错了这里,但我敢肯定,你必须手工编码这个动画。如果你足够努力,你可能会在网上找到一个开源版本。

也许可以拍摄UILabel的图像,并使用sizeWithFont:来确定每个字符的宽度,然后根据每个数字将图像切分为多个部分。或者,您可以为每个数字设置多个UILabel

一旦你有数字图像的数组,你必须计算该数字将会在过渡期间,以及他们是否打算增加或减少,然后通过从推过渡到下一个数字改变顶部/底部(我认为这是一个内置的转换,可以在Core Animation文档中查看)。

你可能会想他们是多么增加/减少,并用它来计算出动画需要多长时间才能确定。这样一来,如果你打算从5到900,最后一个数字将不得不很快动画,倒数第二个会尽快动画1/10,第三个是1/100等

+0

感谢您的解释。 Qegal提供了这样的例子,只是因为这个原因我才接受。 +1虽然很好的回答 – 2012-07-25 23:46:03