2010-08-06 3 views
1

저는 iPhone에서 그래픽 작업을하는 데 상대적으로 새로운 경험이 있으며 어떤 기술을 사용해야하는지에 대한 지침을 얻기를 희망했습니다. 내가 직면 한 문제는 회전하는 바퀴가 달린 iPhone 앱을 만들어야한다는 것입니다. Price Is Right wheel.작업에 적합한 도구 : CoreAnimation, Cocoa Animation 또는 OpenGL ES?

자세한 솔루션을 제공 할 사람이 없기 때문에 재미가 없습니다. Cocoa Animation을 사용하고 바퀴가 회전하면서 각 셀을 손으로 움직이거나 이동하는 것이 더 좋을까요? Core Animation Layers를 사용해야합니까? 또한 OpenGL ES를 사용하고 3D로 실제 실린더를 만든 다음 회전하는 방법을 생각해 보았습니다. 이것은 나에게 가장 논리적 인 것처럼 보이지만 다시이 모든 것을 처음 접하는 것입니다.

+0

귀하의 경험을 공유하십시오. 페이지에서 나오는 스크롤 휠을 만들려고하는데 사용자가 좌우로 스크롤 할 수 있습니다. 또한 이미지를위한 여러 개의 CALayers가있는 CATransformLayer를 사용할 계획입니다. – Zsolt

답변

3

이와 같은 상황에서 필자는 필요한 성능을 얻지 못하면 Core Animation을 먼저 찾고 OpenGL ES 만 사용하는 것이 좋습니다. Quartz 만 사용하여 프레임 단위로 휠을 다시 그릴 경우 성능이 떨어지게되므로 실제로는 옵션이 아닙니다.

Core Animation을 사용하면 많은 코드가 필요없이 회전과 같은 복잡한 애니메이션을 수행 할 수 있습니다. 또한 UIViews 및 기타 UIKit 구성 요소를 활용하여 손쉬운 터치 상호 작용을 제공 할 수 있습니다. 모든 UIView는 레이어를 지원하므로 꽤 가벼운 경향이 있으므로 레이어를 사용하지 않아도됩니다.

OpenGL ES는 최상의 성능을 제공하지만, 구형 장치에서도 Core Animation을 사용하여 바퀴를 돌릴 때 한계에 부딪 힐 것이라고 생각하지 않습니다. OpenGL ES는 동일한 효과를 얻기 위해 더 많은 코드가 필요하며 원하는 모든 터치 상호 작용과 통합하기가 더 어려워집니다.

+0

"OpenGL ES는 최상의 성능을 제공합니다"라고 말합니다. UIKit은 CoreAnimation을 사용하고 CoreAnimation은 주 스레드가 차단 되어도 괜찮은 애니메이션 성능을 제공하도록 설계되었습니다. OpenGL은 당신이 스스로 스레드를 만드는 문제를 겪지 않는 한 그렇게 잘하지 않습니다. –

+1

@tc - 코어 애니메이션 서버는 모든 트위닝을 관리함과 동시에 백그라운드 스레드에 모든 것을 배치하는 것을 처리하지만 약간의 오버 헤드를 추가합니다. 모든 것을 직접 처리하고 특별한 경우에 맞게 조정하면 OpenGL ES를 사용하여 금속에 더 가까이 다가 가면서 성능을 향상시킬 수 있습니다. 집중적 인 응용 프로그램을 위해 여분의 몇 가지 FPS를 쥐어 짜기 위해이 작업을 수행해야했던 여러 개발자로부터 들었습니다. 그러나 OpenGL ES는이 모든 것을 관리하기 위해 작성해야하는 모든 코드 때문에 2 차원 애니메이션의 마지막 수단이되어야합니다. –

0

나는 피드백을 기반으로 코어 애니메이션을 더 깊이 파고 그것을 사용하여 필요한 것을 성취 할 수있었습니다. 모든 조언을 주셔서 감사합니다.

+2

그런 경우 Brad의 대답을 수락해야합니다. 녹색 눈금 표시를 클릭하십시오. – walkytalky