2013-12-09 4 views
1

SVG 이미지를 코드로 직접 변환하는 프로그램을 발견했습니다. iOS 응용 프로그램 크기 문제에 대한 서사적 솔루션처럼 들리지만 여기에는 몇 가지 장애물이 있습니다. 복잡한 이미지를 그리면 4k + 라인의 하드 코어 코드가됩니다. 거의 100KB 순수 파일 크기로 초기 PNG 이미지 크기와 거의 같습니다.iOS 코드 드로잉 대 png

질문 - 그런 종류의 이미지를 코드에서 그리는 데는 포인트가 있습니까? 아니면 정상적인 png로 프로젝트에 포함시키는 것이 더 좋습니까? 코드 크기와 바이너리 크기의 비율은 어떻게 되나요? 또는 어떻게 계산할 수 있습니까?

+1

성능에 대한 고려가 더 중요하다고 생각합니다. drawRect는 GPU가 처리하는 UIKit Image와 비교하여 그리 효율적이지 않은 드로잉을위한 소프트웨어 코드를 사용합니다. –

+0

Kunal, 내가 테스트 한대로 - 코드에서 그림이 순수한 이미지 삽입보다 빠릅니다. 우선 번들에서 이미지를 가져와야합니다. 비즈니스 응용 프로그램에도 불구하고 빠른 렌더링을위한 서두가 없습니다 - 0.02 초 또는 0.002 - 너무 중요하지 않습니다. – Mehdzor

+0

당신은 어떻게 그 결론을 얻을 수 있었는지 나는 모른다. 당신은 단지 두 가지 기능을 비교할 수없고 그것에 기초한 결론을 도출 할 수 없습니다. drawRect는 효율적으로 사용하기를 원하는 메인 스레드에서 실행됩니다. http://stackoverflow.com/questions/14659563/to-drawrect-or-not-to-drawrect-when-should-one-use-drawrect-core-graphics-vs-su –

답변

0

연구 시간이 지나면 UIBezierPath가 내 문제를 꽤 잘 해결한다는 것을 알게되었습니다. 예, UIBezierPath는 CPU를 기반으로하지만 Apple 권장 사항 인 CoreGraphics의 랩입니다. 용도에 따라 가장 높은 수준의 추상화를 사용하고 시스템이이를 수행하도록합니다.

UIBezierPath를 사용하여 벡터 이미지를 그리는 성능은 모든 2D 인터페이스 요소에 대해 충분히 높습니다. 필자가 테스트 한 바에 따르면, 가장 어려운 이미지의 경우에도 망막 디스플레이의 속도 요소는 약 45-50fps로 기본 UI 애니메이션에 비해 충분합니다.

따라서 코드를 사용하여 인터페이스를 그리는 것은 메모리와 신경을 절약합니다.