swift实现简单数字增长动画
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift实现简单数字增长动画相关的知识,希望对你有一定的参考价值。
参考技术A A simple digital growth animation 简单数字增长动画//项目地址: https://github.com/lfb-cd/NumberAnimation
主要用到NSTimer()函数
解决的办法:将字符串三位一组地进行拆分
根据位置不同,调整数字增长快慢。
比如19000。拆分成【190】,【00】数据的前部分(00)增长快些,【190】增长得慢些。
并且,数据并不是从0开始增长,应该从一个较大的数据开始增长,以19000为例,应该从9089开始增长,这样效果会比较好。
简单效果浏览:
iPhone开发中如何制作这种动画效果? Quartz 2d,Vore 动画?
【中文标题】iPhone开发中如何制作这种动画效果? Quartz 2d,Vore 动画?【英文标题】:How can I make this animation effect in iPhone development? Quartz2d, Core Animation? 【发布时间】:2013-05-27 02:21:29 【问题描述】:我想做的是一个动画不断增长的条形图,并且文本(数字)也随着条形图长度的值而增长。它看起来像:
栏应该水平增长,带有数字的文本也应该增长。用户可能希望通过点击“重播”再次播放动画。
在阅读了苹果编程指南和一些很棒的教程之后,我有了一个大概的想法。使用 Quartz2d,我可以绘制条形图和垂直线,以及文本。但是Quartz2d没有动画效果。使用 Core Animation,我可以通过时间和指定的属性值来改变条的形状。我说得对吗?
所以我想我想要的是将 Quartz2d 和 Core Animation 结合起来,先用 Quartz2d 绘制条形,然后使用 CA 对其进行动画处理?这是正确的方法吗?或者,如果有其他可用的轻量级解决方案,我将不胜感激。
PS:我对iPhone绘图很陌生,据我所知,最轻的动画方法是UIView动画,更轻的是CALayer动画。整个绘图工作都是由 Quartz2d 完成的,我说的对吗?即使在我阅读this post 之后,这也有点令人困惑。但实际上,我不会(或不能)对整个图形系统过于概念化。但是在写了一些关于这个的实际代码之后,我肯定会继续挖掘。
所以,现在,我只需要知道这是否是实现这种动画效果的最佳方式。
谢谢大家:)
【问题讨论】:
【参考方案1】:我会使用类似于我在下面写的内容。它会在 1.5 秒内增加您的帧数(当然,您可以更改持续时间)。我不确定你用什么样的物体来塑造你的形状。您可以使用 UIView
之类的东西并将 backgroundColor
设置为您想要的任何内容。
// calculate your new frame - not sure what your parameters are as you've not explained it in your question.
CGRect newFrame = CGRectMake(10, 10, 300, 40); // arbitrary values to demonstrate process...
[UIView animateWithDuration:1.5 animations:^
// grow your rect (assuming yourShape is a UIView)
yourShape.frame = newFrame;
yourLabel.center = CGPointMake(newFrame.size.width - yourLabel.frame.size.width, yourLabel.center.y)
completion:^(BOOL finished)
// do anything here that needs to occur after..
];
不确定您所说的“增加文本”(增加文本或增加字体大小)究竟是什么意思,所以我给出了一个示例,将您的文本保留在水平条的末尾(右侧)) .这应该为试验UIView
动画提供了一个很好的起点。
递增标签更新
您需要使用NSTimer
来增加您的标签。试试这个代码。
在您的 .h 中
int maxNum;
NSTimer *numTimer;
在您的 .m 中
使用它来开始您的计数。您可能希望将其放在您的 UIView
动画之前。
maxNum = 100; // make this whatever number you need..
// you can change the TimeInterval to whatever you want..
numTimer = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(growNumbers:) userInfo:nil repeats:YES];
这是计时器每次触发时调用的选择器(每 0.03 秒):
- (void)growNumbers:(id)sender
int i = self.numberLabel.text.intValue;
if (i >= maxNum)
[numTimer invalidate];
maxNum = 0;
else
i++;
self.numberLabel.text = [NSString stringWithFormat:@"%i",i];
【讨论】:
非常感谢。抱歉,我没有明确说明“增加文本”的问题。我的意思是文本中的数字随着 bar 的增长从 0 增长到 100。不是标签的位置。我认为这与形状无关,而与 label.text 值有关。我该怎么做?再次感谢罗格。 给我一点时间,我不知道该怎么做。启动 Xcode 来玩弄一些代码,我会在得到答案后立即更新我的帖子。 另外,在growNumbers 中设置框架和UIView 动画,使数字和条形增量同步。在每次调用时通过离散增量调整条形框架。 @Kedar,这是一个有趣的想法。 +1 @rog 很好的答案,你让我很开心!谢谢!!以上是关于swift实现简单数字增长动画的主要内容,如果未能解决你的问题,请参考以下文章