上周,公司让把潮流资讯界面改成网易新闻那种循环滚动的。能力有限,改了一周时间,改到最后,自己也不是很满意,交给无线产品去测试了,不知道能否满意,呵呵。到最后是真的开始佩服网易新闻的程序员,和他们的差距还是很大的。
现在趁着有时间,把想法和思路做个标记。
UIScrollView循环,我的思路是这样的。比如有3张图片a,b,c ,想做成循环滚动的那么可以思路是(c,a,b,c,a)。五张图,但是只显示中间的(a,b,c)。当滑动到a的时候,c 也会显示出来,视觉上像是循环了,这个时候,要添加一个响应事件,改变scrollView的contenOffSet属性。让滚动视图滚动到(c,a,b,c,a)中b后面的C的位置。当滑到(c,a,b,c,a)中(b,c)后面那个a 的时候,也是这样的道理,当滑动到a,的时候,感觉是循环到了最前面的这张a图片,然后在这个时候,添加一个响应事件,改变scrollView的contentOffSet属性,让滚动视图滚动到(c,a,b,c,a)中第一个a的位置。这样就实现了UIScrollView的循环滚动。
1.在什么时候触发那个响应事件:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
这个方法只要滑动就能监听的到,在这个方法里面判断个人觉得最合适
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contetPoint = scrollView.contentOffset;
float contetOffX = contetPoint.x;
if(contetOffX == 0.0f)
{
scrollView.contentOffset= CGPointMake(self.view.frame.size.width *3,0);
}
else if (contetOffX == self.view.frame.size.width *4)
{
scrollView.contentOffset = CGPointMake(self.view.frame.size.width, 0);
}
if(contetOffX == 0.0f)
{
[self loadImage:0];
[self loadImage:1];
}
else if(contetOffX == self.view.frame.size.width)
{
[self loadImage:1];
[self loadImage:2];
}
else if(contetOffX == self.view.frame.size.width*2)
{
[self loadImage:2];
[self loadImage:3];
}
else if(contetOffX == self.view.frame.size.width *3)
{
[self loadImage:3];
[self loadImage:4];
}
else if(contetOffX == self.view.frame.size.width *4)
{
[self loadImage:4];
[self loadImage:0];
}
}
-(void)loadImage : (int) num
{
NSString *image1= @"http://img0.bdstatic.com/img/image/shouye/dengni51.jpg";
NSString *image2= @"http://img0.bdstatic.com/img/image/shouye/mxym-9409417791.jpg";
NSString *image3= @"http://img0.bdstatic.com/img/image/shouye/mxly-9624794581.jpg";
UIImageView *imageView = [_imagesArray objectAtIndex:num];
if(num == 0)
{
[imageView setImageWithURL:[NSURL URLWithString:image3]];
}
else if (num == 1)
{
[imageView setImageWithURL:[NSURL URLWithString:image1]];
}
else if(num ==2)
{
[imageView setImageWithURL:[NSURL URLWithString:image2]];
}
else if(num ==3)
{
[imageView setImageWithURL:[NSURL URLWithString:image3]];
}
else if(num ==4)
{
[imageView setImageWithURL:[NSURL URLWithString:image1]];
}
}