2012-03-02 2 views
0

UIScrollView에서 많은 이미지 (및 로직 리사이클)를 사용하는 애플 리케이션에 apple의 scrollview 샘플 코드 PhotoScroller을 사용하고있었습니다. . 내 애플 리케이션에서 구현하고 잘 작동합니다.UIScrollView (PhotoScroller)의 격자 모양과 유사한 배열

이제는 위와 비슷한 앱에서 작동하지만 차이는 입니다.보기를 그리드와 같은 모양으로로드합니다. 동일한 샘플 코드를 사용하면 모든 것이 리사이클 로직을 제외하고 잘 작동합니다.

xcode, 보이는 영역을 말하지 않는 제 프레임 세트에 문제가 있다고 생각합니다. 그리드에 표시되는 세트를 설정하는 방법을 알려주십시오. scrollview 구조를 볼 수 있습니까? 내가 사용하는 코드는 다음과 같습니다.

CGRect visibleBounds = _scrollView.bounds; // CGRect gridElementvisibleBounds = CGRectMake (0, 0, 212, 200); int firstNeededPageIndex = floorf (CGRectGetMinX (visibleBounds) - CGRectGetWidth (visibleBounds)); int lastNeededPageIndex = floorf ((CGRectGetMaxX (visibleBounds) -1) - CGRectGetWidth (visibleBounds)); firstNeededPageIndex = MAX (firstNeededPageIndex, 0); lastNeededPageIndex = MIN (lastNeededPageIndex, [self imageCount] - 1); _scrollView는 I가 사용하고있는 UIScrollView 인스턴스 I가 사용 gridElement이다

는 프레임 크기 (0, 0, 212, 200)이다. scrollView 범위를 차지하는 격자 요소의 수 은 3 x 3 (9)입니다.

나는 500 개가 넘는 이미지를로드 할 것이므로 tableViews (AQGridView 등)와 같은 그리드를 사용하고 싶지 않습니다. 위의 코드를 에서 수정해야 할 부분을 찾아내는 데 도움이되도록 제발 도와주세요.

답변

0

가시 영역을 얻기 위해 contentOffset을 사용하여 거의 문제를 해결했습니다. 다음은 코드를 작성한 것입니다. 나는 contentOffset.y/960를 얻어서 가시 영역을 발견하고 위에서 주어진으로 firstNeededPageIndex있어

int firstNeededPageIndex = ((int)_scrollView.contentOffset.y/960) * 9; 
int lastNeededPageIndex = ((int)_scrollView.contentOffset.y/960) * 9 + 17; 

. scrollview가 스크롤 될 때 숨기려는 페이지의 구성 요소에는 9 개의 요소가 포함되어 있으며 표시 될 것으로 보이는 연속적인 페이지 (lastNeededPageIndex가 있음)에는 구성 요소가 포함되어 있지 않습니다. 따라서 스크롤하는 동안 보이는 영역에 18 개의 객체를 만들어서 표시했습니다. 따라서 스크롤하는 동안 볼 수있는 객체가 0 번째 객체에서 17 번째 객체가되었습니다.

스크롤 결과가 스크롤 될 때마다 visible area (contentOffSet을 통해 얻은)의 18 개 구성 요소 (0-17)가 재활용됩니다.