2

3 개의 UIViews (320 * 568)을 갖는 것. scrollView에 다시 사용하고 싶습니다. UItable 셀을 사용하는 것과 마찬가지입니다. 오전 너비가 320X10 인 UIscrollView을가집니다. 즉 조회수가 10 회가 될 수 있습니다. 그러나 나는 단지 3 개의보기를 사용하고 싶습니다. 여기에 내 코드가 있는데, 너무 빨리 스크롤하면 잘 동작하지 않습니다. 도와주세요.UIScrollView에서 뷰를 재사용하는 방법

- (void) scrollViewDidScroll : (UIScrollView *) 보낸 사람 에 동일한 코드가 추가되었습니다. 올바르게 작동합니다. 하지만 그것은 NSLog ("hello")를 인쇄합니다; 약 10-15 번, 한 페이지 스크롤. . . . . .

(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 

    NSlog("hello"); 
    int pageCurrently = scrollView.contentOffset.x/scrollView.frame.size.width; 

if (scrollView.contentOffset.x < 320) 
{ 
    a=0; 
    b=320; 
    c=640; 
} 
else if (scrollView.contentOffset.x >= 320) 
{ 

    if(scrollView.contentOffset.x == 320) 
    { 
     a=0; 
     b=320; 
     c=640; 
    } 
    else if(toCheckScrollNumber == pageCurrently) 
    { 

    } 
    else if(pageCurrently > intPreviousPage) 
    { 


     largeVal=MAX(c, MAX(a, b)); 
     smallVal=MIN(c, MIN(a, b)); 

     if(smallVal==a) 
     { 
      a = largeVal + 320; 
         } 
     else if(smallVal==b) 
     { 

      b = largeVal + 320; 

     } 
     else if (smallVal==c) 
     { 
      c = largeVal + 320; 

     } 

    } 

    else if(pageCurrently < intPreviousPage) 
    { 

     largeVal=MAX(c, MAX(a, b)); 
     smallVal=MIN(c, MIN(a, b)); 

     if(largeVal==a) 
     { 
      a = smallVal - 320; 

     } 
     else if(largeVal==b) 
     { 
      b = smallVal - 320; 

     } 
     else if (largeVal==c) 
     { 
      c = smallVal - 320; 

     } 


    } 


} 

NSLog(@"a=%d , b=%d , c=%d ",a,b,c); 

[_otlSubView1 setFrame:CGRectMake(a, 0, 320, 568)]; 
[_otlSubView2 setFrame:CGRectMake(b, 0, 320, 568)]; 
[_otlSubView3 setFrame:CGRectMake(c, 0, 320, 568)]; 

    intPreviousPage=pageCurrently; 


} 
+0

당신은 페이징을 할 필요가 https://github.com/caesarcat/InfinitePagingView – amar

+0

당신이 대신 UICollectionView를 사용하지 않는 이유는 무엇입니까? 당신은 상자에서이 기능을 얻을 것입니다. –

+0

@KakoSquid UI 요구 사항 때문에 UIcollectionView를 사용할 수 없습니다. – Jasmeet

답변

0

당신은보기 재사용하지 didEndDecelerating을 수행 할 scrollViewDidScroll 기능을 사용한다 - 스크롤 뷰가 이미 감속 할 때 후자 만이라고합니다.

보기가 매우 작기 때문에 (예 : 10 픽셀 높이) 일부보기를 더 추가해야 할 수도 있습니다 (예 :보기가 하나가 될뿐만 아니라 이미 3 개가 미리 표시되어있을뿐만 아니라 UITableView 또한 몇 줄 더를 미리로드 않습니다.

+0

같은 것을 구현했다. 예, 작동합니다. 그러나 이것을 구현하는 데 몇 가지 문제가 있습니다. 보기에 8 개의 이미지가 있습니다. 어느 것이 웹 서비스를 형성 할 것인가? 나는 그것이 문제를 만들 것이라고 믿는다. 왜냐하면 ** NSLog ("hello")는 ** scrollViewDidScroll() **에서 한 번 이상, 거의 15-20 번 인쇄합니다. – Jasmeet

+0

scrollViewDidScroll은 많이 호출됩니다. 스크롤 뷰가 스크롤 될 때마다 이름에서 알 수 있듯이 :-). 물론 스크롤 뷰가 스크롤 될 때마다 하위 뷰를 재정렬해서는 안되지만 필요한 경우 논리를 추가하여 남겨 두어야합니다. 웹 서비스의 이미지는 백그라운드에서 한 번만 비동기 적으로로드되고 캐시되어야합니다 (예 :이 클래스의 수행 방법은 https://github.com/rs/SDWebImage를 참조하십시오). 지금 사용하고있는 웹 서비스에 대한 – TheEye

+0

그래, (무효) scrollViewDidEndDecelerating : (있는 UIScrollView *)있는 ScrollView {} 나는 웹 서비스에 대한 코드를 작성하며,의 재사용 UIView의 코드를 작성합니다 - (무효) scrollViewDidScroll : (UIScrollView *) 대리자 Soleved :) – Jasmeet