如何在UIScrollView上重用视图

时间:2013-11-22 07:34:22

标签: iphone objective-c uiview uiscrollview uiscrollviewdelegate

我有三个UIViews(320 * 568)。我想在scrollView上重复使用它们。就像我们使用UItable单元格一样。 AM UIscrollView宽度为320X10。即,它可以显示10个视图。但我想只使用3个视图。这是我的代码,但是当我滚动太快时它不能正常工作。请帮助。

我在 - (void)scrollViewDidScroll:(UIScrollView *)发件人中添加了相同的代码 它正常工作。但它打印NSLog(“你好”);大约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;


}

1 个答案:

答案 0 :(得分:0)

您应该使用scrollViewDidScroll函数进行视图重用,而不是didEndDecelerating - 后者仅在滚动视图已经减慢时调用。

由于您的视图非常小(高10像素),您可能还需要提前添加一些视图(例如,不仅一个视图会变得可见,但可能已提前3个 - { {1}}也预先加载几行。

相关问题