您的位置:首页 > 移动开发 > IOS开发

关于ios图片无限轮播

2015-09-01 17:54 204 查看
这几天需要写一个图片的无线轮播器。所以去网上看了一下,比照着人家的方法,自己的demo大家可以看一下。

#import "ViewController.h"

@interface
ViewController ()<UIScrollViewDelegate>

@property (nonatomic,weak)
UIScrollView *scrollView;
@property (nonatomic,weak)
UIImageView *currentImageView;
// 当前imageView
@property (nonatomic,weak)
UIImageView *nextImageView;
// 下一个imageView
@property (nonatomic,weak)
UIImageView *preImageView;
//上一个imageView
@property (nonatomic,strong)NSTimer *timer;
//设置动画

@property(nonatomic,retain)NSArray *array;//图片数组

@property(nonatomic,weak)UIPageControl *page;//分页

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];



UIScrollView *scrollView =[[UIScrollView
alloc] init];

CGFloat width =
self.view.frame.size.width;



CGFloat height =
self.view.frame.size.height;
scrollView.frame =
CGRectMake(0,
0, width, height);
[self.view
addSubview:scrollView];

self.scrollView = scrollView;
[self.scrollView
setContentSize:CGSizeMake(width *
4, height)];

//
设置隐藏横向条

self.scrollView.showsHorizontalScrollIndicator =
NO;

//
设置自动分页

self.scrollView.pagingEnabled =
YES;

//
设置代理

self.scrollView.delegate =
self;

//
设置当前点

self.scrollView.contentOffset =
CGPointMake(width,
0);

//
设置是否有边界

self.scrollView.bounces =
NO;



self.array=@[@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg",@"5.jpg",@"6.jpg",@"7.jpg",];



UIPageControl *page=[[UIPageControl
alloc]initWithFrame:CGRectMake(100,
200,
200, 100)];

self.page=page;
[self.view
addSubview:self.page];

self.page.numberOfPages=self.array.count;

self.page.currentPageIndicatorTintColor=[UIColor
redColor];







//
初始化当前视图

UIImageView *currentImageView =[[UIImageView
alloc] init];
currentImageView.image = [UIImage
imageNamed:self.array[0]];
[self.scrollView
addSubview:currentImageView];

self.currentImageView = currentImageView;

self.currentImageView.frame =
CGRectMake(width,
0, width, height);

//self.currentImageView.contentMode = UIViewContentModeScaleAspectFill;

//
初始化下一个视图

UIImageView *nextImageView = [[UIImageView
alloc] init];
nextImageView.image = [UIImage
imageNamed:self.array[1]];
[self.scrollView
addSubview:nextImageView];

self.nextImageView = nextImageView;

self.nextImageView.frame =
CGRectMake(width *
2, 0, width, height);

//self.nextImageView.contentMode = UIViewContentModeScaleAspectFill;

//
初始化上一个视图

UIImageView *preImageView =[[UIImageView
alloc] init];
preImageView.image = [UIImage
imageNamed:self.array[2]];
preImageView.frame =
CGRectMake(0,
0, width, height);
[self.scrollView
addSubview:preImageView];

self.preImageView = preImageView;

//self.preImageView.contentMode =UIViewContentModeScaleAspectFill;



[self
loadTimer];


}

//开始
-(void)loadTimer
{

self.timer = [NSTimer
scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(update:)
userInfo:nil
repeats:YES];
}
- (void)update:(NSTimer *)timer{

//定时移动

CGPoint offSet =
self.scrollView.contentOffset;
offSet.x +=offSet.x;

[self.scrollView
setContentOffset:offSet animated:YES];



if (offSet.x >=
self.view.frame.size.width *2) {
offSet.x =
self.view.frame.size.width;
}



//有点错误

self.page.currentPage++;

if (self.page.currentPage==self.array.count-1)
{

self.page.currentPage=0;
}




}

//停止
-(void)stopTimer
{

[self.timer
invalidate];
}

#pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{

[self
stopTimer];
}

// 停止滚动
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{

[self
loadTimer];
}

// 开始拖动
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{

static
NSInteger i =1;
//当前展示的是第几张图片

float offset = self.scrollView.contentOffset.x;

if (self.nextImageView.image ==
nil || self.preImageView.image ==
nil) {

//
加载下一个视图

NSString *imageName1 = [NSString
stringWithFormat:@"%ld.jpg",i ==
self.array.count ?
1:i +1];

_nextImageView.image = [UIImage
imageNamed:imageName1];

//
加载上一个视图

NSString *imageName2 = [NSString
stringWithFormat:@"%lu.jpg",(unsigned
long)(i==1 ?
self.array.count :i-1)];

_preImageView.image = [UIImage
imageNamed:imageName2];
}

if(offset ==0){

_currentImageView.image =
_preImageView.image;
scrollView.contentOffset =
CGPointMake(scrollView.bounds.size.width,
0);

_preImageView.image =
nil;

if (i == 1) {
i =self.array.count;
}
else{
i-=1;
}
}

if (offset == scrollView.bounds.size.width *
2) {

_currentImageView.image =
_nextImageView.image;
scrollView.contentOffset =
CGPointMake(scrollView.bounds.size.width,
0);

_nextImageView.image =
nil;

if (i == 7) {
i =1 ;
}else{
i +=1 ;
}
}


}

@end

可以直接运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: