- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self createSubview];
[self setDefaultImage];
}
return self;
}
- (void)createSubview{
[self addScrollView];
[self addImageViews];
[self addPageControl];
[self addLabel];
}
#pragma mark - 加載圖片數(shù)據(jù)
- (void)loadImageData:(NSArray *)imageArr{
_imageArr = [NSMutableArray arrayWithArray:imageArr];
_imageCount = _imageArr.count;
}
#pragma mark - 添加ScrollView控件
- (void)addScrollView{
_scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
[self addSubview:_scrollView];
//設(shè)置代理
_scrollView.delegate = self;
//設(shè)置contentSize
_scrollView.contentSize = CGSizeMake(3 * ScreenWidth, ScreenHeight);
//設(shè)置當(dāng)前顯示的位置為中間的圖片
[_scrollView setContentOffset:CGPointMake(ScreenWidth, 0) animated:NO];
//設(shè)置分頁
_scrollView.pagingEnabled = YES;
//去掉水平滾動條
_scrollView.showsHorizontalScrollIndicator = NO;
}
#pragma mark - 添加圖片三個控件
- (void)addImageViews{
_leftImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)];
_leftImageView.contentMode=UIViewContentModeScaleAspectFit;
[_scrollView addSubview:_leftImageView];
_centerImageView=[[UIImageView alloc]initWithFrame:CGRectMake(ScreenWidth, 0, ScreenWidth, ScreenHeight)];
_centerImageView.contentMode=UIViewContentModeScaleAspectFit;
[_scrollView addSubview:_centerImageView];
_rightImageVeiw=[[UIImageView alloc]initWithFrame:CGRectMake(2*ScreenWidth, 0, ScreenWidth, ScreenHeight)];
_rightImageVeiw.contentMode=UIViewContentModeScaleAspectFit;
[_scrollView addSubview:_rightImageVeiw];
}
#pragma mark - 設(shè)置默認(rèn)顯示圖片
- (void)setDefaultImage{
//加載默認(rèn)圖片
_leftImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"xifuer%ld.jpeg",_imageCount - 1]];
_centerImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"xifuer%d.jpeg",0]];
_rightImageVeiw.image = [UIImage imageNamed:[NSString stringWithFormat:@"xifuer%d.jpeg",1]];
_currentImageIndex = 0;
NSString * name=[NSString stringWithFormat:@"xifuer%ld.jpeg",_currentImageIndex];
_label.text = name;
//設(shè)置當(dāng)前頁
_pageControl.currentPage = _currentImageIndex;
}
#pragma mark - 添加分頁控件
- (void)addPageControl{
_pageControl = [[UIPageControl alloc]init];
//此方法可以根據(jù)頁數(shù)返回UIPageControl合適的大小
CGSize size = [_pageControl sizeForNumberOfPages:_imageCount];
_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);
_pageControl.center = CGPointMake(ScreenWidth/2, ScreenHeight-100);
//設(shè)置顏色
_pageControl.pageIndicatorTintColor = [UIColor colorWithRed:193/255.0 green:219/255.0 blue:249/255.0 alpha:1];;
//設(shè)置當(dāng)前頁顏色
_pageControl.currentPageIndicatorTintColor=[UIColor colorWithRed:0 green:150/255.0 blue:1 alpha:1];
//設(shè)置總頁數(shù)
_pageControl.numberOfPages=_imageCount;
[self addSubview:_pageControl];
}
#pragma mark - 添加文字描述
- (void)addLabel{
_label=[[UILabel alloc]initWithFrame:CGRectMake(0, ScreenHeight - 180, ScreenWidth,30)];
_label.textAlignment=NSTextAlignmentCenter;
_label.textColor=[UIColor colorWithRed:0 green:150/255.0 blue:1 alpha:1];
[self addSubview:_label];
}
#pragma mark - 滾動停止代理方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//重新加載圖片
[self reloadImage];
//移動到中間
[_scrollView setContentOffset:CGPointMake(ScreenWidth, 0) animated:NO];
//設(shè)置分頁
_pageControl.currentPage = _currentImageIndex;
//設(shè)置描述
NSString * name=[NSString stringWithFormat:@"xifuer%ld.jpeg",_currentImageIndex];
_label.text = name;
}
#pragma mark - 重新加載圖片
- (void)reloadImage{
NSInteger leftImageIndex,rightImageIndex;
CGPoint offset = [_scrollView contentOffset];
if (offset.x>ScreenWidth) {
//向右滑動
_currentImageIndex = (_currentImageIndex + 1)%_imageCount;
}else if (offset.x<ScreenWidth){
//向左滑動
_currentImageIndex = (_currentImageIndex + _imageCount - 1)%_imageCount;
}
_centerImageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"xifuer%ld.jpeg",_currentImageIndex]];
//重新設(shè)置左右圖片
leftImageIndex=(_currentImageIndex+_imageCount-1)%_imageCount;
rightImageIndex=(_currentImageIndex+1)%_imageCount;
_leftImageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"xifuer%ld.jpeg",leftImageIndex]];
_rightImageVeiw.image=[UIImage imageNamed:[NSString stringWithFormat:@"xifuer%ld.jpeg",rightImageIndex]];
}
//控制器里調(diào)用
TGSDSCrollView * tgView = [[TGSDSCrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
NSArray * imageArr1 = @[@"xifuer0.jpeg",@"xifuer1.jpeg",@"xifuer2.jpeg",@"xifuer3.jpeg",@"xifuer4.jpeg"];
[tgView loadImageData:imageArr1];
[self.view addSubview:tgView];