Apple의 PhotoScroller 샘플 코드에서 코드를 추출하여 CATiledLayer
을 사용했습니다. 타일에서 인터넷에서로드 된 8000x7000px의 이미지가 있습니다.슈퍼 뷰에서 이미지를 제거한 후에도 이미지를 보임
이것은 내 앱의 일종의지도 기능입니다. 나는 또한 서로 다른 오버레이를 가진 두 개의 거의 동일한 이미지를 가지고 있습니다 (운없이 오버레이 만 추가하려고했습니다).
나는 세 가지 선택 사항 사이를 토글하기 위해 UISegmentedControl
을 가지고 있으며, imageView가 선택한 이미지에서 이미지를로드하기를 원합니다. 따라서 사용자가 이미지 중 하나를 확대하고 다른 옵션을 선택하면 배율과 좌표는 동일하게 유지되며 imageView는 선택한 이미지를 필요한 타일 영역에로드합니다.
나는 이것을 부분적으로 관리했다. 또는 실제로 이것을 관리했지만 다른 옵션을 선택하면 [imageView removeFromSuperview];
함수가 호출 될 때 전체 화면이 검게 변합니다. 인터넷 속도에 따라 2 초 내에 검은 색으로 표시되면 올바른 타일이 표시됩니다.
가능한 경우 레이어를 다음 레이어로 "페이드"시키길 원합니다. 여러분이 아시다시피, CATiledLayer
을 사용할 때 첫 번째 레이어는 저해상도의 전체 이미지이지만 확대 할 때 필요한 타일은 작은 타일로 다음 레이어로 "사라집니다".
기본적으로 (TilingView*)imageView
에 "다시로드"명령을주고 마지막 이미지 위에 "페이드"시키길 원합니다.
나는 [imageView removeFromSuperview];
을 주석 처리하려고했는데, 실제로는 내가 원하는 것에 가깝게 잡혔다. 확대하고 다른 옵션을 선택하면 새 이미지가 이전 이미지보다 실제로 사라져 버렸지 만 다시 축소했을 때 이전 이미지가 배경에 새 이미지 뒤에 분명히 붙어있어 아무 것도 응답하지 않았습니다. 나중에 superView에서 제거해야하지만 새 이미지가 imageView로 자리 잡으면 서 더 이상 액세스 할 수 없습니다. 사람들이 여기 코드를보고 싶어 할지도 모르겠지만 어떤 코드를 보여줄지 전혀 알지 못합니다. 그리고 CATiledLayer
은 너무 가깝게 문서화되어 있습니다. 실제로 무슨 일이 일어나는지 이해하는 데 어려움을 겪고 있습니다.
Inet에서 jpeg 대신 전체 타일을로드하는 경우 시간이 오래 걸리는 것처럼 보입니다.PhotoScrollerNetwork (github에 있음)를 확인해보십시오.이 도구를 사용하면 jpeg를 다운로드하고 타일을 바꿔서 동시에 다운로드 할 수 있습니다. Quartz 또는 libjpegturbo와 함께 사용할 수도 있습니다. –
@DavidH 그래, 그걸 확인해 봤지만 시간이 좀 더 걸리지 않을까? 나는 이미지를보기 위해 전체 이미지를 다운로드해야한다고 생각하니? 필요한 타일 대신에? 지도 기능이므로 사용자는 모든 이미지의 심층 레이어를 전혀 볼 수 없으므로 전체 이미지를 다운로드 할 필요가 없습니다. – Sti
첫 번째 작은보기의 타일을 다운로드 할 수 있다면 정확합니다. 시간면에서 엄청난 승리. –