Core Animation или OpenGL ES?

Я хочу сделать следующее:

Нажмите на экран и нарисуйте 3 кривых вокруг повернутой точки. Лучше сделать это с Core Animation или OpenGL ES?

С чего мне начать?

5 ответов

Решение

Как уже упоминалось, Core Graphics Framework, вероятно, то, что вы хотите. Хороший способ сделать это - создать подкласс UIView, а затем переопределить два метода. drawRect: а также touchesEnded:withEvent:,

Когда событие касания заканчивается в UIView, вы можете получить точку последнего касания от события, переданного в touchesEnded:withEvent:и сохраните его как-нибудь в экземпляре вашего UIView.

Затем в вашей реализации drawRect:вы получите сохраненную последнюю точку касания и обведете ее тремя кругами, используя три вызова CGContextAddEllipseInRect, как обсуждено здесь: Руководство по программированию Quartz 2D: Пути (требуется регистрация в качестве разработчика Apple).

Мой опыт таков: чем сложнее становилось мое приложение, тем больше я осознавал, что должен был использовать OpenGL ES для того, что я пытался сделать.

Итак, для вашей ситуации, если то, что вы описали, это все, что есть, конечно, Core Graphics делает свое дело. Но я предполагаю, что это больше, чем три круга.

При отсутствии опыта работы с OpenGL кривая обучения ES составляла около 20 дней.

Таким образом, мой совет: OpenGL ES для практически каждого приложения, основанного на покадровой графике.

Преимущество изучения OpenGL ES состоит в том, что время, которое вы потратите на его изучение, в будущем пригодится вам для приложений iPhone и других устройств.

В OpenGL ES нет встроенного способа рисования круга, поэтому используйте синус и косинус, чтобы построить круги из отрезков.

Базовая графика определенно проще и лучше для 2D. OpenGL ES сделан для 3D, но также может быть использован для 2D. Оба могут быть использованы, поэтому, если вы уже знаете один, используйте это. Это не должно иметь большого значения.

Я уже знал OpenGL, поэтому я склонен использовать OpenGL ES даже для 2D, но если вы раньше не использовали ни одного, переходите на Core Graphics.

Лучше всего это сделать с помощью Quartz 2D (также известного как Core Graphics).

Смотрите руководство по программированию Apple Quartz

Другие вопросы по тегам