xindrace 发表于 2013-1-30 20:25:25

UIScrollView循环滚动

我弄了半天终于弄出UIScrollView循环了,分享一下,方法感觉有点不好,要是有大侠有更好的方法指点一下。
 
<img alt="">
 
创建了一些文件,ScrollView就是要在ScrollViewController循环的View

//_colorArray.count+2是因为需要在前后多加一个View    CGSize newSize = CGSizeMake(MDefaultScrollWidth*(_colorArray.count+2), MDefaultScrollHeigh);    ; 我的实现方法就是在头和尾各多加一个View,头view与实现的最后一个view数据相同,尾view与实现的第一个view的数据相同:

//头View    NSArray* firstNibView =[ loadNibNamed:@"ScrollView"owner:self options:nil];    ScrollView* firstView = ;    ;    ];    ];    ;//尾view    NSArray* lastNibView =[ loadNibNamed:@"ScrollView"owner:self options:nil];    ScrollView* lastView = ;    ;    ];    ];    ; 
在加入中间要实现的View

for (int i=0; i<_colorArray.count; i++) {      NSArray* nibView =[ loadNibNamed:@"ScrollView"owner:self options:nil];      ScrollView* scrollView = ;      ;      NSLog(@"%d",i);      ];      ];      ;    } 
第一次显示的时候要将ScrollView把头view移过去

self.scrollView.delegate = self;//第一次显示移到第二个view; 
最后在

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 加入方法:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    CGFloat pageWidth = MDefaultScrollWidth;    CGFloat pageHeigth = MDefaultScrollHeigh;      //计算当前view的位置    int currentPage = floor((self.scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1;    NSLog(@"the current page==%d",currentPage);      if (currentPage == 0) {      //当移动到头view的时候,切换到实现的最后一个view      , 0, pageWidth, pageHeigth) animated:NO];      NSLog(@"the last image");      return;    }else if(currentPage == +1){      //当移动到尾view的时候,切换到实现的第一个view      ;      NSLog(@"the first image");      return;    }}这样就完成循环了,方法不是很好,希望大侠指正!!!
 
写的不是很好,把源码传上来,也许更能看懂,以后争取多写些文章练练文笔。
 
页: [1]
查看完整版本: UIScrollView循环滚动