#import "BannerCollectionCell.h"
#import "UIImageView+WebCache.h"
@implementation BannerCollectionCell
-(void)awakeFromNib
{
}
-(id)initWithFrame:(CGRect)frame
{
if (self == [superinitWithFrame:frame])
{
//定时器循环
[NSTimerscheduledTimerWithTimeInterval:5target:selfselector:@selector(runTimePage)userInfo:nilrepeats:YES];
}
return self;
}
- (void)addImages:(NSArray *)imagesURLArray
{
for (UIView *subViewin _scrollView.subviews)
{
[subViewremoveFromSuperview];
}
self.arrayCount = imagesURLArray.count;
_scrollView = [[UIScrollViewalloc]initWithFrame:CGRectMake(0,0, self.frame.size.width,self.frame.size.height)];
_scrollView.pagingEnabled =YES;
_scrollView.showsVerticalScrollIndicator =NO;
_scrollView.showsHorizontalScrollIndicator =NO;
_scrollView.delegate =self;
[selfaddSubview:_scrollView];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tapBannerImage:)];
[_scrollViewaddGestureRecognizer:tapGesture];
for (int i =0 ; i < imagesURLArray.count; i++)
{
UIImageView *oneImageView = [[UIImageViewalloc]initWithFrame:CGRectMake((i+1) *self.frame.size.width,0, self.frame.size.width,self.frame.size.height)];
[oneImageView sd_setImageWithURL:[NSURLURLWithString:[imagesURLArray objectAtIndex:i]] ];
[_scrollViewaddSubview:oneImageView];
}
//取数组最后一张图片放在第0页
UIImageView *zeroImage = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0, self.frame.size.width,self.frame.size.height)];
[zeroImagesd_setImageWithURL:[NSURLURLWithString:[imagesURLArray objectAtIndex:imagesURLArray.count-1]]];
[_scrollViewaddSubview:zeroImage];
//取数组第一张图片放在最后1页
UIImageView *firstImage = [[UIImageViewalloc]initWithFrame:CGRectMake(self.frame.size.width*(imagesURLArray.count+1),0, self.frame.size.width,self.frame.size.height)];
[firstImagesd_setImageWithURL:[NSURLURLWithString:[imagesURLArray objectAtIndex:0]]];
[_scrollViewaddSubview:firstImage];
_scrollView.contentSize =CGSizeMake(self.frame.size.width * (imagesURLArray.count+2),self.frame.size.height);
[_scrollViewsetContentOffset:CGPointMake(0,0)];
[_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width,0, self.frame.size.width,self.frame.size.height)animated:NO];
CGFloat pageControlWith = 30 *imagesURLArray.count;
CGFloat pageControlHeight = 30;
_bannerPageControl = [[UIPageControlalloc]initWithFrame:CGRectMake(CGRectGetWidth(_scrollView.frame)/2 - pageControlWith/2, CGRectGetHeight(_scrollView.frame) - pageControlHeight, pageControlWith, pageControlHeight)];
_bannerPageControl.currentPage =0;
_bannerPageControl.numberOfPages = imagesURLArray.count;
_bannerPageControl.currentPageIndicatorTintColor = [UIColorblackColor];
_bannerPageControl.pageIndicatorTintColor = [UIColordarkGrayColor];
[_bannerPageControladdTarget:selfaction:@selector(turnPage)forControlEvents:UIControlEventValueChanged];
[selfaddSubview:_bannerPageControl];
}
- (void)tapBannerImage:(UITapGestureRecognizer*)tap
{
NSInteger x = _scrollView.contentOffset.x/SCREEN_WIDTH;
if ([self.tapDelegaterespondsToSelector:@selector(tapImageWithtag:)])
{
[self.tapDelegatetapImageWithtag:x];
}
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
NSInteger index = (_scrollView.contentOffset.x/CGRectGetWidth(_scrollView.frame));
index -- ;
_bannerPageControl.currentPage = index;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSInteger index = (_scrollView.contentOffset.x/CGRectGetWidth(scrollView.frame));
if (index==0)
{
[_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width * self.arrayCount,0,self.frame.size.width,self.frame.size.height)animated:NO];// 序号0最后1页
}
else if (index==(self.arrayCount+1))
{
[_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width,0,self.frame.size.width,self.frame.size.height)animated:NO];// 最后+1,循环第1页
}
_bannerPageControl.currentPage = index;
[_bannerPageControlupdateCurrentPageDisplay];
}
// pagecontrol 选择器的方法
- (void)turnPage
{
NSInteger page =_bannerPageControl.currentPage;// 获取当前的page
[_scrollViewscrollRectToVisible:CGRectMake(self.frame.size.width*(page+1),0,self.frame.size.width,self.frame.size.height)animated:YES];// 触摸pagecontroller那个点点往后翻一页 +1
}
// 定时器 绑定的方法
- (void)runTimePage
{
NSLog(@"0000000");
NSInteger page =_bannerPageControl.currentPage;// 获取当前的page
page++;
page = page > (self.arrayCount -1) ? 0 : page ;
_bannerPageControl.currentPage = page;
[selfturnPage];
}
@end