2011-09-21 3 views
0

더 깊은 zoomlevel을 사용할 때마다 zoomlevel을 재설정하여 끝이없는 확대/축소를 할 수 있습니까?끝없는 확대/축소 CATiledlayer iOS

각 타일마다 다른 색상이있는 CATiledLayer를 만들고 타일을 확대 할 때 새로운 색상을 얻는 등의 작업을하고 있습니다.

답변

2

CATiledLayer를 사용하는 방법에 대해 잘 모르겠지만 Matt Neuburg의 Programming IOS 4에는 UIScrollView를 사용하여 비슷한 작업을 수행하는 방법을 설명하는 "Zooming with Detail"섹션이 포함되어 있습니다.

UIScrollView는 내용을 확대/축소하는 기능을 지원하지만 더 높은 zoomScale에서 내용을 다시 렌더링하지 않고 축소 변형을 사용하여 내용의 확대 렌더링을 확대합니다. 따라서 실제로 세부 묘사가 확대 된 확대/축소를 제공하려면 일부 논리를 추가해야합니다.

기본적으로이 책에서는 scrollViewDidEndZooming : withView : atScale :을 구현하여 UIScrollView의 zoomScale을 기본값 1.0으로 재설정하고 (2) 내용보기를 제거하고 내용이있는 새보기를 제공하도록 제안합니다. 원하는 실제 줌 배율. 이 진정한 척도를 수동으로 추적하려면 직접 ivar를 도입해야합니다. 결과적으로 사용자가 더 크게 확대하고 실제 스케일이 계속 증가함에 따라 UIScrollView는 서로 다른 뷰의 연속을 유지하고 1.0에서 최대까지 해당 범위 내에서 자체 zoomScale의 순환을 유지 한 다음 1.0으로 재설정 한 후 1.0에서 최대로 재설정합니다 이 책은 골격의 예를 보여줍니다 (제 1 판의 506면, 두 번째 책자 인쇄).

끝없는 확대/축소를 위해 이것을 어떻게 사용 하시겠습니까? 참으로 끝이없는 확대/축소가 필요하지 않은 경우에는 실제 범위의 매우 큰 범위로 위 작업을 수행 할 수 있습니다.

정말 끝이없는 확대/축소를 원할 경우 실제 범위의 한정 변수로 확대/축소 수준을 추적 할 수 없습니다. 대신 scrollViewDidEndZooming : withView : atScale :을 수정하여 UIScrollView의 zoomScale을 기본값 1.0으로 재설정합니다. (1) 내용보기를 제거하고 새 view를 제공합니다. 여기서 새 zoomScale 1.0은 이전 zoomLevel에서 제거 된 뷰와 시각적으로 동일합니다. 이러한 방식으로 사용자가 핀치 아웃 제스처를 계속 확대하면 UIScrollView는 1.0에서 최대까지 반복적으로 순환하여 사용자의 제스처 사이에서 각주기의 기본보기를 눈에 보이지 않게 교체합니다.

+0

매우 goog 아이디어, 나는 그것을 시도하고있다 :) – RecycleRobot

관련 문제