2000x200 제한을 잊어 버렸습니다. 18000 x 18000 NASA 이미지를 그리는 오픈 소스 프로젝트가 있습니다.
이 작업을 두 부분으로 나누는 것이 좋습니다. 첫째, 스크롤. CodaFi가 제안한 것처럼 스크롤하면 CATiledLayers가 제공됩니다. 각각의 CGImageRef는 사용자가 만든 거대한 캔버스의 하위 이미지입니다. 그러면 확대/축소를 쉽게 지원할 수 있습니다.
두 번째 부분은 사용자와 상호 작용하여 캔버스를 그리거나 효과를냅니다. 사용자가 스크롤을 멈 추면 불투명 한 UIView 하위 클래스를 만들고 하위 뷰로 추가하여 기본 뷰에 추가하고 CATiledLayers를 호스팅하는 뷰를 오버레이합니다. 이 뷰를 표시해야하는 순간 적절한 정보로 채워 지므로 큰 캔버스의 해당 부분을 제대로 그릴 수 있습니다 (이 시점에서 원과 같은 색상 등).
이 오버레이보기의 drawRect : 메소드를 사용하여 그림을 만들 것입니다. 따라서 사용자가보기를 변경하는 동작을 수행 할 때 iOS가 drawRect :를 호출하도록 강제하는 데 필요한대로 "setDisplayInRect :"를 수행합니다.
사용자가 스크롤하기로 결정하면 사용자가 변경 한 내용으로 큰 캔버스 모델을 업데이트 한 다음 불투명 한 오버레이를 제거하고 CATiledLayers가 큰 이미지의 적절한 부분을 그려야합니다. 이 전환은 아마도 시각적 인 결함을 피하는 과정에서 가장 까다로운 부분 일 것입니다.
캔버스에 사용 된 많은 개체 정의가 있다고 가정하십시오. 타일에 CGImageRef를 생성해야하는 경우 객체의 프레임과 타일 프레임 사이의 겹침을 찾아 스캔 한 다음 해당 타일에 필요한 항목 만 그립니다.
아마도 자신의 scrollView에 고정 된 몇 개의 CATiledLayers가 완벽 할 것입니다. – CodaFi