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];
}
}
}