【问题标题】:Countdown using images使用图像倒计时
【发布时间】:2011-09-03 10:07:53
【问题描述】:

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

我想给界面加点润色,并显示一个图形倒计时,这对用户来说更有吸引力。

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

我的问题:

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

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

  3. 如何为图像更改设置动画 超过?理想情况下我想要什么 要从中滑入的新图像 图像视图的顶部,而 它正在替换幻灯片的图像 从底部。这还 可能吗?

澄清一下,我并不是在找人为我编写代码,只是在寻找一些关于我的实际实现的指针。

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

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

【问题讨论】:

    标签: iphone objective-c ios uiimageview


    【解决方案1】:

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

    对于倒数计时器,不要减少 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 开始,网络上也有一些教程。这是一个学习Core Animation的优秀小项目。

    【讨论】:

    • 非常感谢您的输入 rob。
    【解决方案2】:
    1. 高效?我认为你的方法是合理的。每 1000 毫秒动画 3 个相对较小的图像视图对处理器来说并不是很多工作。但效率/性能问题始终必须凭经验回答 (imo)。
    2. 最好? - 如果它工作、执行、不崩溃等,您还需要什么? 我能想到的唯一其他方法是提供背景图片,并且仍然为数字使用动态 UILabel。

    在这一点上,我会说去吧,看看你会得到什么。
    祝你好运。

    【讨论】:

    • 我希望我可以将一个问题的多个答案标记为正确。
    • @Mick Walker - 好吧,Rob 的回答比我的要好得多,所以我对我的支持感到满意。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多