Я бы хотел имитировать флип-счетчик в стиле Apple на iOS.
В частности, эта вещь будет летать быстро. Это не будильник, подумайте игрок, набравший больше очков, когда вы одновременно набираете очки. Счетчик может перепрыгнуть с 0 до 100, до 5000, он не будет увеличиваться последовательно, но когда он будет увеличиваться, он будет анимироваться до следующего числа в хорошем клипе, и он будет переходить к следующему целевому значению через секунду или две , Он также не будет иметь заданного числа разрядов, он может считать от 0 до 2 000 000, если захочет. Как игрок с высокими показателями, вы не знаете, что они в итоге получат. Поскольку оно не может быть отрицательным, теоретически максимум будет UINT_MAX
Я немного искал и нашел пару отличных ресурсов, ни один из которых не кажется мне правильным.
Это подход js / css, который теоретически может работать внутри UIWebView:
В этой статье объясняется, как выполнять перелистывание страниц в Core Animation. Он достаточно подробный, но мне кажется, что в нем отсутствуют некоторые ключевые компоненты, и это может привести к тому, что прикосновения будут игнорироваться в пользовательском интерфейсе, пока он переворачивается.
Теперь, прочитав их, у меня появилось несколько разных идей о том, как это сделать самостоятельно, пытаясь взвесить плюсы и минусы каждого подхода:
1) Загрузите html-счетчик в UIWebView.
- Очевидные преимущества: возможно, многократное использование кода, быстрое и грязное
- Очевидные недостатки: издержки
UIWebView
и постоянные звонки на stringByEvaluatingJavaScriptFromString
из хост-приложения со следующим номером кажутся глупыми
2) Создание пользовательского спрайт-листа и использование базовой анимации
- Очевидные преимущества: нативный код, кажется, это был бы менее бесполезный подход, чем использование веб-представления
- Очевидные недостатки: создание пользовательских листов спрайтов на данный момент кажется немного бессмысленным перед лицом пользовательского чертежа, так как в любом случае я уже создаю вид с пользовательским чертежом. Похоже, что единственный способ заставить его работать хорошо - рисовать изображения на подслоях, а не использовать UIImageViews
3) Визуализация текста / округленных строк с помощью Core Graphics
- Очевидные преимущества: 100% решение с собственным кодом, без изображений
- Очевидные недостатки: лодка загружает больше кода, имеющего несколько экземпляров UIImage. Не знаю, смогу ли я получить правильный образ, который мне нужен, без изображений
4) Рендеринг всего с помощью OpenGL ES 2.0
- Очевидные преимущества: полный контроль над рендерингом, возможно, лучшая производительность
- Очевидные недостатки: мне кажется, что мне все еще, вероятно, понадобятся некоторые изображения для привязки к текстурам, возможно, накапливает больше кода, чем рендеринг основной графики в # 3
С одной стороны, я могу рационализировать это и сказать, что анимация будет длиться всего полсекунды или секунды, поэтому лучше всего просто подделать ее как-нибудь с размытыми изображениями и фактически ничего не анимировать. С другой стороны, мне кажется, что это именно то, для чего Core Animation + Core Graphics была разработана, и я должен их использовать.