使用图像倒计时

时间:2011-05-27 13:31:53

标签: iphone objective-c ios uiimageview

我目前有一个应用程序,它将显示分配给用户执行某个操作的时间。目前很简单,使用UILabel显示剩余时间。

我想在界面上添加一些润色,并显示图形倒计时,这对用户来说更具吸引力。

我不知道如何做到这一点,但我的理论如下: 我知道我倒计时的最大值是999.所以我可以创建3个UIImageViews来表示每个数字。 计时器当前每秒更新剩余的倒计时值,然后将UILabel设置为该值。理论上,我可以将此字符串拆分为其组成数字(或循环字符串字符),并根据传入的数字将“数字”图像加载到相应的UIImageView中。

我的问题:

  1. 我提到的方法是不是 效率?

  2. 这是最好的方法吗?     情况?

  3. 如何为图像更改设置动画     过度?理想情况下我想要它     要从中滑入的新图像     顶部的图像视图,而     它取代幻灯片的图像     从底部。这是否均匀     可能的?

  4. 只是为了澄清一下,我不是在找人为我编写代码,只是想找几个关于实际实现的指针。

    非常感谢您花时间阅读这篇文章。

    编辑,看来这里的帖子How to animate the change of image in an UIImageView?帮助我动画实际图像。但我仍然希望就我提议的实施获得任何建议。

2 个答案:

答案 0 :(得分:1)

  1. 高效?我认为你的方法很合理。每1000毫秒动画3个相对较小的图像视图对处理器来说并不是很多工作。但是效率/性能问题总是必须凭经验回答(imo)。
  2. 最佳? - 如果它有效,执行,不会崩溃等等,您还需要什么? 我能想到的唯一另一种方法是提供背景图像,并且仍然使用动态UILabel作为数字。
  3. 此时,我会说去,看看你得到了什么 祝你好运。

答案 1 :(得分:0)

您的基本方法是合理的。要记住的一些事情:

对于倒数计时器,请勿减少NSTimer中剩余的时间。相反,始终使用“现在减去开始时间”。如果系统繁忙,NSTimer可能无法按计划启动。阅读NSTimer中的“重复与非重复定时器”,了解它们的工作原理。

对于这样的问题,我喜欢用digit0.png,digit1.png等名称来命名我的文件。然后,你可以像这样加载它们:

NSString *imageName = [NSString stringWithFormat:@"digit%d.png", digit];
self.imageView.image = [UIImage imageNamed:imageName];

+imageNamed:有自己的缓存,所以这非常有效。或者,您可以使用早期加载的10个图像的数组,并使用objectAtIndex:来获得正确的图像。我通常只使用+ imageNamed:。

滑入新图片没问题,但您不应该使用UIImageView。您可能应该使用当前和下一个图像加载的两个CALayers创建自定义视图,并使用简单的动画从一个到另一个滑动。从Core Animation Programming Guide开始,网上也有几个教程。这是一个学习核心动画的优秀小项目。