Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何制作无限UIScrollView?_Ios_Iphone_Uiscrollview - Fatal编程技术网

Ios 如何制作无限UIScrollView?

Ios 如何制作无限UIScrollView?,ios,iphone,uiscrollview,Ios,Iphone,Uiscrollview,我曾经在UIScrollView中创建过重用视图,效果很好。您知道如何使用UIScrollView中的重用子视图使此代码无限滚动吗 代码 #pragma标记 #pragma标记-滚动视图委托方法 -(无效)scrollViewDidScroll:(UIScrollView*)scrollView{ [self-setNeedsLayout]; int currentPosition=floor(scrollView.contentOffset.x); currentPage=最大值(0,楼层(c

我曾经在
UIScrollView
中创建过重用视图,效果很好。您知道如何使用
UIScrollView
中的重用子视图使此代码无限滚动吗

代码

#pragma标记
#pragma标记-滚动视图委托方法
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
[self-setNeedsLayout];
int currentPosition=floor(scrollView.contentOffset.x);
currentPage=最大值(0,楼层(currentPosition/scrollView.frame.size.width));
如果(当前页面!=参考页面)
{
refPage=当前页面;
如果([arrQLst count]>0)
{
[自替换隐藏视图];
}
}
}
-(void)ScrollViewDiEndScrollingAnimation:(UIScrollView*)scrollView
{
如果([arrQLst count]>0)
{
[自替换隐藏视图];
}
}
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-(void)replaceHiddenView
{
const double pageWidth=self.frame.size.width;
NSInteger电流指数;
currentIndex=([self-getScrollView].contentOffset.x-pageWidth)/pageWidth)+1;
随机视图*当前视图=零;
RandomView*previousView=nil;
随机视图*nextView=nil;
if(CGRectContainsPoint(objRandom1.frame[self-getScrollView].contentOffset))
{
currentView=objRandom1;
previousView=objRandom2;
nextView=objRandom3;
}
else if(CGRectContainsPoint(objRandom2.frame[self-getScrollView].contentOffset))
{
currentView=objRandom2;
previousView=objRandom1;
nextView=objRandom3;
}
其他的
{
currentView=objRandom3;
previousView=objRandom1;
nextView=objRandom2;
}
currentView.frame=CGRectMake(self.frame.size.width*currentIndex,0.0,self.frame.size.width,self.frame.size.height);
[currentView setQuestionData:[arrQLst objectAtIndex:currentIndex]];
//现在把其他的移动一下
//并为下一卷做好准备
如果(当前索引<[arrQLst计数]-1)
{
nextView.frame=CGRectMake(self.frame.size.width*(currentIndex+1),0.0,self.frame.size.width,self.frame.size.height);
[nextView setQuestionData:[arrQLst objectAtIndex:(currentIndex+1)];
}
如果(当前索引>=1)
{
previousView.frame=CGRectMake(self.frame.size.width*(currentIndex-1),0.0,self.frame.size.width,self.frame.size.height);
[previousView setQuestionData:[arrQLst objectAtIndex:(currentIndex-1)];
}
如果([arrQLst count]>0)
[self-checkForRequestForLoadMore:currentIndex];
}
-(void)显示视图索引:(NSInteger)索引
{
@试一试
{
NSInteger计数=[arrQLst计数];
如果(索引>=0&&index0)
{
objQ=[arrQLst objectAtIndex:(索引-1)];
objRandom3.frame=CGRectMake(self.frame.size.width*(索引-1),0.0,self.frame.size.width,self.frame.size.height);
[objRandom3 setQuestionData:objQ];
}
}
}
@捕获(NSException*异常)
{
NSLog(@“显示视图索引异常%s”,函数);
}
}

以下是创建无限滚动视图的方法。此应用程序使用可可豆,您必须从终端下载可可豆。Github有很多很棒的开源框架,可以让你在前进的过程中跟上你的想法

最终找到了解决方案,并在上面的代码中创建了无限滚动视图。在这里,我们使用上面相同的代码设置视图的帧

代码:

//在这里,我在数组的第一个索引和最后一个索引中添加了两个虚拟数据 第一个位置我添加的最后一个对象和我拥有的最后一个对象 添加了arrData的第一个对象。当我们创建数据集时 第一个对象和最后一个对象的两个虚拟数据

-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    [self setNeedsLayout];

    int currentPosition = floor(scrollView.contentOffset.x);
    currentPage = MAX(0,floor(currentPosition / scrollView.frame.size.width));

    if(currentPage != refPage)
    {
        refPage = currentPage;
        if ([arrQLst count] > 0)
        {
            [self replaceHiddenView];
        }
    }


   if (scrollView.contentOffset.x <= 0.0)
    {
        if ([arrQLst count] > 1)
        {
            [self displayViewAtIndex:([arrQLst count]-2)];
        }
    }
    else if (scrollView.contentOffset.x > (scrollView.frame.size.width * ([arrQLst count] - 1)))
    {
        if ([arrQLst count] > 1)
        {
            [self displayViewAtIndex:1];
        }
    }
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
[self-setNeedsLayout];
int currentPosition=floor(scrollView.contentOffset.x);
currentPage=最大值(0,楼层(currentPosition/scrollView.frame.size.width));
如果(当前页面!=参考页面)
{
refPage=当前页面;
如果([arrQLst count]>0)
{
[自替换隐藏视图];
}
}
if(scrollView.contentOffset.x 1)
{
[自显示视图索引:([arrQLst count]-2)];
}
}
else if(scrollView.contentOffset.x>(scrollView.frame.size.width*([arrQLst count]-1)))
{
如果([arrQLst count]>1)
{
[自显示视图索引:1];
}
}
}

请在您的问题中发布您的现有代码(使用“编辑”功能)Hi@Raptor我已经编辑了我的问题,请检查代码。在这段代码中,什么时候调用了didScroll方法
        if ([arrQLst count] > 1)
        {
            [arrQLst insertObject:[arrQLst lastObject] atIndex:0];
            [arrQLst addObject:[arrQLst objectAtIndex:1]];
        }
        //end
        [self setContentSizeOfScrollView];
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    [self setNeedsLayout];

    int currentPosition = floor(scrollView.contentOffset.x);
    currentPage = MAX(0,floor(currentPosition / scrollView.frame.size.width));

    if(currentPage != refPage)
    {
        refPage = currentPage;
        if ([arrQLst count] > 0)
        {
            [self replaceHiddenView];
        }
    }


   if (scrollView.contentOffset.x <= 0.0)
    {
        if ([arrQLst count] > 1)
        {
            [self displayViewAtIndex:([arrQLst count]-2)];
        }
    }
    else if (scrollView.contentOffset.x > (scrollView.frame.size.width * ([arrQLst count] - 1)))
    {
        if ([arrQLst count] > 1)
        {
            [self displayViewAtIndex:1];
        }
    }
}