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

ios无线轮播图

2016-01-20 14:48 417 查看
首先创建一个scrollview

_centerIndext = 0;

_scroller = [[UIScrollView alloc]init];
_scroller.frame =CGRectMake(0, 0, WIDTH, self.frame.size.height);
_scroller.contentSize = CGSizeMake(3*WIDTH, 0);
_scroller.contentOffset = CGPointMake(WIDTH, 0);
_scroller.backgroundColor = [UIColor clearColor];
_scroller.pagingEnabled =YES;
_scroller.bounces = NO;
_scroller.delegate = self;
_scroller.showsVerticalScrollIndicator = NO;
_scroller.showsHorizontalScrollIndicator = NO;
[self addSubview:_scroller];


再创建3个imageVIew
_leftImage = [[UIImageView alloc]init];
[_leftImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,[_imageUrlArray lastObject]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_leftImage.frame = CGRectMake(0,(selfHeight-height)/2 , WIDTH, height);
[_scroller addSubview:_leftImage];

}];

_centerImage = [[UIImageView alloc]init];
[_centerImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,_imageUrlArray[0]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_centerImage.frame = CGRectMake(WIDTH, (selfHeight-height)/2, WIDTH, image.size.height*bili);
[_scroller addSubview:_centerImage];
} ];

_rightImage = [[UIImageView alloc]init];
[_rightImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,_imageUrlArray[1]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_rightImage.frame = CGRectMake(WIDTH*2, (selfHeight-height)/2, WIDTH, image.size.height*bili);
[_scroller addSubview:_rightImage];
}];
接着是scrollview滑动结束后触动的方法
CGFloat selfHeight = HEIGHT-49-64;

NSInteger leftIndext,rightIndex;

CGPoint offset = [_scroller contentOffset];

if (offset.x == 2*WIDTH)
{
_centerIndext = (_centerIndext+1)%_imageUrlArray.count;

}
else if (offset.x == 0)
{
if (_centerIndext-1 <0)
{
_centerIndext = _imageUrlArray.count-1;
}
else
{
_centerIndext = (_centerIndext-1)%_imageUrlArray.count;
}

}

[_centerImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,_imageUrlArray[_centerIndext]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_centerImage.frame = CGRectMake(WIDTH, (selfHeight-height)/2, WIDTH, image.size.height*bili);

} ];

if (_centerIndext == 0)
{
leftIndext = _imageUrlArray.count-1;

}
else
{
leftIndext = (_centerIndext-1)%_imageUrlArray.count;
}
rightIndex = (_centerIndext+1)%_imageUrlArray.count;

[_leftImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,_imageUrlArray[leftIndext]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_leftImage.frame = CGRectMake(0,(selfHeight-height)/2 , WIDTH, height);

}];

[_rightImage sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagURL,_imageUrlArray[rightIndex]]] placeholderImage:[UIImage imageNamed:@"默认logo-文章列表用.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
CGFloat bili = WIDTH/image.size.width;
CGFloat height =image.size.height*bili;
_rightImage.frame = CGRectMake(WIDTH*2, (selfHeight-height)/2, WIDTH, image.size.height*bili);

}];

最后是代理
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self reloadImage];

[_scroller setContentOffset:CGPointMake(WIDTH, 0) animated:NO];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: