2011-09-09 5 views
4

여러 가지 이유로 CATiledLayer를 자체적으로 구현하려고합니다. 조사를 해봤지만 CATiledLayer가 제공 할 타일을 어떻게 알 수 있는지는 알 수 없습니다. 예를 들어 레이어를 스크롤하면 setPosition : 또는 setBounds :가 호출되지 않습니다. 백그라운드 스레드가 drawLayer : inContext :를 트리거없이 청색 밖으로 위임받은 것처럼 보입니다. CATiledLayer가 "CAImageProvider"인스턴스와 함께 setContent :를 호출하고 drawLayer : inContext :에 대한 모든 호출이 해당 클래스에서 비롯된 것으로 밝혀졌습니다. 아마 그 타일이 그릴 타일을 결정하는 열쇠입니다. 하지만 해당 클래스에 대한 문서를 찾을 수 없습니다.CATiledLayer는 새로운 타일을 언제 제공해야하는지 어떻게 알 수 있습니까?

그럼 ... 어떻게 작동하는지, 그리고 어떻게 재정의 할 수 있는지 알고있는 사람이 있습니까? CATiledLayer의 단점에 관해서는

:

  • 이 항상 화면 해상도 (또는 X2, X4 등)을 사용합니다
  • 다른 배율 인수를 지정할 수 없습니다.
  • levelsOfDetail 및 levelsOfDetailBias를 지정해야하는데, 구현 이유가 전혀 없습니다. 도형과 같이 무한히 확장 할 수있는 콘텐츠가있는 경우 이는 매우 제한적입니다.
  • 가장 중요한 : 당신이 한 방향으로 만 확대로 제한 할 경우 (내가 :) 사용해 setTransform 1로 한 방향의 축척 비율을 강제함으로써, drawLayer:inContext:에서
+0

@fishiear : 질문 이후로 오래 되었습니까? 나는 정말로 같은 문제가있다. 그것을 해결 했습니까? 나는 줌 배율 3을 달성해야하며 내 솔루션을 찾고 있습니다. 그러나 그것이 좋은지 나는 모른다. 마침내 당신은 무엇을 했습니까? 나는 너와 연락하고 싶다. 나에게 편지를 쓸 수있어. 그것은 나를 위해 매우 중요합니다. – Fab1n

+0

@ Fab1n이 특별한 문제는 해결하지 못했습니다. 내가 마지막으로 수행 한 작업은 표시된 내용이 변경 될 것을 알 때마다 명시 적으로 타일링 된 레이어 구현을 알리는 것입니다 (확대/축소 및 스크롤 한 후 새 내용을 사용할 수있는 시점). 내가 당신과 이메일 주소를 남겨두고 코드를 공유 할 수 있습니다. – fishinear

+0

빠른 응답에 감사드립니다. 내 이메일 주소는 내게 com에서 renneronline입니다. 와우는 코드를 고맙게 생각합니다. 생각하면 시간을 많이 절약 할 수 있습니다. – Fab1n

답변

1

모든 이상한 역할을 그렇게, 당신이 할 수있는 CGContextGetClipBoundingBox을 사용하여 경계 상자를 가져옵니다. CGContextGetCTM은 현재 해상도에 대한 정보를 제공해야합니다.

+0

고마워,하지만 알아. catiledlayer가 나에게 drawlayer를 보낼시기를 알고있는 방법에 대한 정보를 찾고 있습니다. 즉석 메시지입니다. – fishinear

관련 문제