2011-10-07 4 views
3

큰 SVG 파일을 렌더링해야하는 프로젝트가 있습니다. 지금까지 UIWebView를 사용해 왔지만 작동하는 데 10 초 이상 걸릴 수 있습니다. 오래된 기기의 경우 앱 메모리가 부족합니다.iOS에서 큰 벡터 그래픽 처리에 대한 조언이 필요합니다.

나는 몇 가지 가능한 해결책을 마련했습니다

  • 사용하십시오 CATiledLayer (하지만 SVG 함께 할 수있는 방법을 찾을 수 없습니다)
  • 가 래스터는 SVGs 먼저 그들을 분할을, (이 전혀 벡터 WTH 도움이 될 경우 메신저 확실하지 않지만? - 이전 경험을 가진 사람) 다음 타일 레이어 (이 있지만, 첫 번째 실행에 정말 느린 것)
  • 를 사용하여 PDF를 대신 사용

SVG 생성 된 서버 쪽, 그래서 그 앞에 너무 제안에 열립니다 (즉. 형식 변경)

앞으로이 방법을 선택하는 데 경험이있는 사람들의 조언을 주시면 감사하겠습니다. 당신은 진심으로 감사드립니다!

답변

2

오케이! 많은 시행 착오 끝에 나는 iOS에서 방대한 SVG의 부드럽고 매끄러운 scrollview를 가지고 있다고 믿는다.

기본적으로 svg를 타일로 자르고 UIWebViews를 사용하여 UIScrollView 내에서 렌더링해야합니다.

주 스레드에서 비동기 적으로 타일을로드해야합니다. 배경 스레드에서 UIWebView로 작업 할 수 없기 때문에 까다로울 수 있습니다. scrollviewdidscroll에서 타일을로드하려고하면 프레임이 고르지 않게됩니다.

또한 UIWebViews에서 작은 재설정 CSS를 사용하여 타일 주위에 추운 패딩을 없앨 수 있습니다.

* { 
margin:0; 
padding:0; 
} 

나를 위해 해줬습니다.

0

PDF는 Adobe Illustrator의 기본 형식이며 iOS에서 잘 지원되므로 벡터 그래픽을위한 옵션입니다. 복잡한 벡터 그래픽을 렌더링하는 작업은 항상 CPU가 많이 필요하므로 빠르게 수행해야 할 작업을 찾아야합니다. iOS의 PDF 스택이 WebKit의 SVG 지원보다 훨씬 성숙하다는 점을 감안할 때 더 빠를 수 있지만 입력 파일에는 많이 달려 있다고 생각합니다. Apple에서 ZoomingPDFViewer sample code을 확인하면 CATiledLayer을 PDF와 함께 사용하여 시작할 수 있습니다.

+0

집에 도착했을 때 샘플 코드를 확실히 확인합니다. – Ben

+0

내 관심사는 메모리 제한입니다. 이러한 svgs 꽤 복잡하고 나는 그들에게 전체 발사에서 렌더링하는 것이 좋은 해결책이라고 생각하지 않는다. 바둑판 식 접근법을 사용하는 방법이 이상적입니다. PDF의 벡터가 그 패턴에 잘 반응하는지 확실하지 않습니다. – Ben

+0

시도해 보았습니다 - 아직 빠르지 않았습니다.나는 8 메가 비트 벡터 그래픽이 모바일 장치에서 좋은 아이디어가 아니라는 것을 받아 들일 때가되었다고 생각한다. – Ben

0

필자는 Inkscape가 할 수없는 큰 SVG 파일을 처리 할 수있는 시스템을 작성했습니다. SVG를 JavaScript와 HTML로 변환합니다. 공개 버전은 내 개발 환경보다 느린 웹 서버에서 실행됩니다. 대형 SVG라고 부르는 것을 테스트하고 싶습니다. 작동하면 JavaScript 및 HTML로 SVG를 만들고 SVG를 훼손하여 사용자가 빌드 된 것을 볼 수 있습니다. 중형 및 대형 SVG를 보낼 수 있으므로 dev 및 test에서 변환 할 수 있습니까?

맞춤법 검사 - 아이팟

+0

집에 도착하면 시험 데이터를 보내 드리겠습니다. 자바 스크립트와 HTML이 좋은 해결책이 될지 모르겠다. 웹킷의 네이티브 SVG 기능이 더 빠를 것이라고 기대한다. – Ben

+0

Chasbeen, 내가 일하는 파일 종류는 다음과 같습니다. http://dl.dropbox.com/u/29939553/tuscany.svg 링크를 지울 수 있도록 복사본을 가져 왔을 때 알려주십시오. 내 보관 용 계정에서. 나는 당신의 시스템이 파일의 작은 부분을 1.0 스케일로 빠르게 렌더링 할 수 있는지에 대해서 관심을 가질 것이다. – Ben

+0

Ben 내가 할 수있는 최선의 방법은 SVG를 2 메가 바이트로 줄이는 것입니다. 포맷을 시작하기 전에 10 초를 기다려야합니다. 나는 그것이 변환기가 얼마나 멀어 질지에 관해서 흥미를 느낄 것이라고 생각했다 ... http://www.irunmywebsite.com/raphael/p_BIGMUSIC1d.php – Chasbeen

관련 문제