2009-07-27 8 views
2

나는 사진 갤러리 앱을 작업 중입니다. 루트보기는 사용자를 축소판보기로 이동시키는 탐색 컨트롤러입니다. 미리보기 이미지를 누르면 사용자가 전체 이미지로 탭 이미지를 보여주는 PhotoView로 이동합니다. 다음은UIScrollView 앱이 기기에서 충돌하지만 시뮬레이터에서 완벽하게 실행됩니다.

내가 내 PhotoViewController에서 수행 한 것입니다 :

접근 방식이 거의 유사 내가 GitHub의에서 발견 된있는 ScrollingMadness 프로젝트입니다.

UIScrollView를 초기화하고 뷰 컨트롤러의 뷰에 하위보기로 추가합니다. UIScrollView의 몇 가지 기본 속성을 설정합니다. UIImageViews에 이미지를 추가하십시오 (숫자 5). 이러한 이미지 뷰를 모두 하위 뷰로 UIScrollView에 추가합니다. 이미지에서 확대/축소 작업을 수행하면 모든 이미지 하위 뷰가 있지만 현재 뷰는 스크롤 뷰에서 제거됩니다. 이미지가 최소 눈금으로 축소되면 모든 이미지가 UIScrollView에 다시 추가됩니다.

Apple의 샘플 코드에서 설명한 것처럼 TapDetectingImageView 대리인을 사용하여 imageViews를 만들고 터치 이벤트를 처리하고 있습니다.

앱을 실행하면 모든 것이 시뮬레이터에서 올바르게 작동합니다. 어떤 문제도 없습니다. 하지만 기기에서 앱을 실행하면 3 번째 또는 4 번째 이미지로 스크롤 한 후 충돌이 발생합니다. 디버깅하는 동안 나는 3 번째 또는 4 번째 이미지로 스크롤 한 후 didReceiveMemory 경고가 호출됨을 알게되었습니다. Instruments를 사용하여 앱을 실행합니다. 객체 할당은 충돌이 발생할 때 할당 수준을 1.5-2MB로 보여줍니다. 이 수준의 메모리 사용은 매우 정상적인 것 같습니다 ... 맞습니까?

전에 이것을 경험 한 사람이나 내가 어떻게 제거 할 수 있는지에 대한 의견은이 시점에서 내가 필요한 모든 도움이 될 것입니다.

다른 정보가 필요한 경우 알려 주시기 바랍니다.

PS는> 그 시뮬레이터에서 완벽하지만 장치 :(자사의 메모리가 부족하기 때문에

답변

2

그것은 충돌됩니다에서 충돌 전체 응용 프로그램을보고 좌절, 당신은 확인해야 한 가지가 있으며, 사진의 크기 당신은 사진 라이브러리 w/o 편집에서 이미지를 선택, 때로는 이것은 메모리가 부족하기 때문에 거의 그냥 휴대 전화 충돌이 1600x1400의 해상도의 U 이미지를 줄 것이다, 당신은 작은 것들로 이미지 크기를 조정해야합니다. 그것을 일으킬 수있는 또 다른 문제는 당신이 한 번에 너무 많은 이미지를로드하는 것입니다 (나는 그렇게 생각하지 않습니다.) 만약 당신이 스크롤을 사용하여 스크롤을 아이폰의 사진 응용 프로그램과 비슷하게해야한다면, 한 번에 3 장의 이미지를로드하십시오. 이미지를 올바르게 확대합니다. 아이폰의 사진 응용 프로그램에서 사진을 스크롤하는 것과 유사한 기능을 수행하려고하는 경우 다시 알지 못한다. 샘플 프로젝트 PageControl을 보면 꽤 잘 설명 할 수있다.

+0

Daniel - 픽셀 완벽합니다. 이미지는 1200x1600이었다. 나는 그들을 320x480으로 조각 냈다. 그것은 매력처럼 작동한다. 지금 사용하고있는 이미지의 수는 5 개입니다.하지만 결국 20 개의 이미지를 사용해야합니다. 당신이 언급 한 것처럼 한 번에 3 개의 이미지를 로딩하는 방법이나 lazy laod imageViews를 제안 할 수 있다면 큰 도움이 될 것입니다. 확대 부분이 처리되었습니다. 아무것도 메모리에 들어갔다 갔다. 이미 메모리에있는 내용의 하위보기에있는 인풋 항목. 도움 주셔서 감사합니다. –

+0

애플 아이폰 개발자 사이트에서 샘플 프로젝트 인 PageControl을 보면, 원하는 것을 성취 할 수있는 좋은 예가있다. – Daniel

관련 문제