iOS上的本机代码中最快的Apple Style Flip Counter

问题描述 投票:1回答:3

我想在iOS上模仿苹果风格的翻转计数器。

具体来说,这件事情将会飞得更快。它不会是一个闹钟,想想玩家高分,你一次只能拿出积分。计数器可以从0跳到100,到5000,它不会按顺序递增,但是当它增加时,它将在一个漂亮的剪辑中动画到下一个数字,并且它将在一两秒内跳到下一个目标值。它也没有一定数量的数字位置,如果需要,它可以从0到2,000,000。像一个高分的球员,你不知道他们最终会得到什么。因为它不能是负数,理论上最大值是UINT_MAX

我做了一些搜索,我发现了一些很好的资源,在我看来,这两种资源都不是正确的方法。

这是理论上可以在UIWebView中运行的js / css方法:

本文将介绍如何在Core Animation中进行翻页。它足够详细,但在我看来它似乎缺少一些关键组件,并且会在UI翻转时导致触摸被忽略。

现在,在阅读完这些内容之后,我对自己如何做到这一点有了不同的想法,试图权衡每种方法的优点和缺点:

1)在UIWebView中加载html计数器整个销售。

  • 显而易见的好处:可能大量的代码重用,快速和肮脏
  • 明显的缺点:UIWebView的开销和来自主机应用程序的持续调用stringByEvaluatingJavaScriptFromString有下一个数字似乎很傻

2)创建自定义精灵表并使用核心动画

  • 显而易见的好处:本机代码,似乎比使用Web视图更简单
  • 显而易见的缺点:在这一点上创建自定义精灵表似乎在自定义绘图方面毫无意义,因为我已经创建了一个带有自定义绘图的视图。似乎让它表现良好的唯一方法是将图像绘制到子图层而不是使用UIImageViews

3)使用Core Graphics渲染文本/舍入的rects

  • 明显的好处:100%本机代码解决方案,没有图像
  • 显而易见的缺点:载入更多具有一些UIImage实例的代码。真的不知道我是否可以在没有图像的情况下获得正确的外观

4)使用OpenGL ES 2.0渲染整个内容

  • 显着的好处:完全控制渲染,可能是最佳性能
  • 明显的缺点:在我看来,我仍然可能需要一些图像来绑定到纹理,可能比#3中的核心图形渲染堆积更多的代码

一方面,我可以对它进行合理化,并说动画只会持续半秒或一秒钟,所以最好的办法就是用模糊的图像以某种方式伪造它而不是实际动画。另一方面,在我看来,这正是Core Animation + Core Graphics的设计做得很好,我应该使用它们。

objective-c ios opengl-es core-graphics
3个回答
4
投票

使用图像精灵结束使用图像进行绘图。

代码在这里https://github.com/reklis/flipcounter


1
投票

screen short show both image view from right to left original and from left most re-size image flipCounter在Xcode中工作得很好,但问题是如何重新调整FlipCounter View的大小。当我用小图像改变原始图像时工作不好。![此图像比原始图像小50%] [2]我正在等待正面回复。谢谢advane


0
投票

如果是我,我会去核心图形路线,只需用drawrect方法将文本绘制到视图中。我可能会构建一些背景和前景图像,我可以覆盖文本以实现UIPickerView外观。由于您只需要为文本设置动画,因此您可能会覆盖某种半透明的渐变图像,使其看起来像数字正在翻转并进入阴影。

如果你不在OpenGL中编程游戏,OpenGL路线似乎有点过分。 (另外,你必须编写一堆样板代码来渲染文本并将图像加载到纹理中等)

© www.soinside.com 2019 - 2024. All rights reserved.