之前看过网上很多关于UIScrollView的循环滚动demo,,一直看不懂,然后自己琢磨着写一个代码量比较少的,容易看懂的.以便新手学习和以后自己能看懂.
先在视图控制器中的.h文件创建UIScrollView的属性,并且写上代理
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController<UIScrollViewDelegate>@property (nonatomic,retain)UIScrollView *scrollview;
@end
#import "MainViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
-(void)dealloc
{
[_scrollview release];
[super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_scrollview = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 100, 320, 300)];//起始scrollview的坐标
[_scrollview setPagingEnabled:YES];//让_scrollview可以翻页
_scrollview.delegate = self;//scrollview的代理
[_scrollview setPagingEnabled:YES];
[_scrollview setBounces:YES];//边框回弹
[_scrollview setContentOffset:CGPointMake(320, 0)];//设置起始偏移量,也就是第二个页面是图片的第一张.从第二个页面作为起始页面
[_scrollview setContentSize:CGSizeMake(2560, 0)];//因为我要添加6张图片,所以,需要创建8个分页效果.每页320.所以是2560
[self.view addSubview:_scrollview];//将_scrollview添加到view视图上
[self setAutomaticallyAdjustsScrollViewInsets:NO];//不加这句话循环滑动的时候imageview的大小会有变动,具体是什么不清楚.
CGFloat width = 0;//循环创建imageview.一共有六张图片,因为要前后都可以循环翻页,所以需要八张.
for (int i = 0 ; i < 8; i ++) {
UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(width, 10, 320, 250)];
NSString *string = [NSString stringWithFormat:@"%d.jpg",i];//给每个imageview添加图片
[image setImage:[UIImage imageNamed:string]];
if (i == 7)// i = 7表示最后一个页面,所以要和第一张的图片一样,当翻到最后一页的时候,下面会调用一个方法,跳到第一张图片的那个页面,因为跳到的页面图片和最后那页的图片一样,所以看上去就像循环滚动了一样.
{
[image setImage:[UIImage imageNamed:@"1.jpg"]];
}
if (i == 0)//同理:i = 0表示第一个页面,所以要与第六张图片一样. 因为第二个页面是起始页面,当翻回第一个页面的时候,下面会调用一个方法,将跳到第六张图片的那个页面.因为跳到的页面图片和第一页面的图片一样,所以看上去就像循环滚动了一样.
{
[image setImage:[UIImage imageNamed:@"6.jpg"]];
}
[_scrollview addSubview:image];
width += 320;
[image release];
}
// Do any additional setup after loading the view.
}
//滑动停止时调用的方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//contentOffset.x表示偏移量,当偏移量大于6 * 320的时候,也就是翻到第七页的时候,此时的偏移量就跳到第一张图片的页面,也就是第二页
if ( _scrollview.contentOffset.x >6 * 320) {
_scrollview.contentOffset = CGPointMake(320, 0);
}
//以下同理,自己计算
if (_scrollview.contentOffset.x <= 0) {
_scrollview.contentOffset = CGPointMake(6 * 320, 0);
}
}
代码就这么多,多多看看注释,然后多练习就懂了.最重要的方法- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView,当滑动停止时调用的.