#import "ViewController.h"

#import "YZUIScrollView.h"

#define kuan ([UIScreen mainScreen].bounds.size.width+20)

#define gao [UIScreen mainScreen].bounds.size.height

@interface ViewController ()<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *huaBu;

@property(nonatomic,strong)NSArray *images;

@property(nonatomic)NSInteger currentIndex;

@end


@implementation ViewController

//懒加载,调用get方法时对属性进行初始化

-(NSArray *)images

{

if(_images==nil)

{

NSMutableArray *imagearray=[NSMutableArray array];

for (int i=1; i<7; i++) {

NSString *imageName=[NSString stringWithFormat:@"new_feature_%d",i];

UIImage *image=[UIImage imageNamed:imageName];

[imagearray addObject:image];

}

_images=imagearray;

}

return _images;

}

- (void)viewDidLoad {

[super viewDidLoad];

//设置UIScrollView的contentSize

_huaBu.contentSize=CGSizeMake(kuan*3, gao);

//设置分页

_huaBu.pagingEnabled=YES;

//隐藏水平滚动栏和垂直滚动栏

_huaBu.showsHorizontalScrollIndicator=NO;

_huaBu.showsVerticalScrollIndicator=NO;

//设置背景颜色,突出不同的图片

_huaBu.backgroundColor=[UIColor blackColor];

//设置代理要遵守协议<UIScrollViewDelegate>

_huaBu.delegate=self;

//调用方法添加子视图

[self tianJiaZiShiTu];

//调用方法添加图片

[self tianJiaTuPian];

}

//添加子视图的方法

-(void)tianJiaZiShiTu

{

//相册的话,是一个大的UIScrollView中放了很多的小UIScrollView,但是为了节省内存空间,所以只是添加了三个UIScrollView(图片不停的变换位置)

for (int i=0; i<3; i++) {

//创建YZUIScrollView

YZUIScrollView * yzuisv=[[YZUIScrollView alloc] initWithFrame:CGRectMake(kuan*i, 0, kuan-20, gao)];

//添加YZUIScrollView

[_huaBu addSubview:yzuisv];

//设置tag值,便于区分

yzuisv.tag=1000+i;

}

}

//添加方法的图片

-(void)tianJiaTuPian

{

YZUIScrollView *leftSC=(YZUIScrollView *)[_huaBu viewWithTag:1000];

YZUIScrollView *middleSC=(YZUIScrollView *)[_huaBu viewWithTag:1001];

YZUIScrollView *rightSC=(YZUIScrollView *)[_huaBu viewWithTag:1002];

leftSC.image=self.images[[self indexFofEnable:_currentIndex-1]];

middleSC.image=self.images[[self indexFofEnable:_currentIndex]];

rightSC.image=self.images[[self indexFofEnable:_currentIndex+1]];

//设置偏移量,这步很重要

_huaBu.contentOffset=CGPointMake(kuan, 0);

}

//确保索引可用

-(NSInteger)indexFofEnable:(NSInteger)index

{

if(index<0)

{

return self.images.count-1;

}

else if (index>self.images.count-1)

{

return 0;

}

else

return index;

}

//滚动结束后,把所有的缩放视图比例还原为1.0

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

for (id obj in _huaBu.subviews) {

if([obj isKindOfClass:[UIScrollView class]])

{

UIScrollView *scaleSC=(UIScrollView *)obj;

scaleSC.zoomScale=1.0;

}

}

//判断左右滑动

//偏移量的x为0,就是说明向右滑动了,就是看的之前左边的那张图片

if(scrollView.contentOffset.x==0)

{

//对应的图像应该是变成左边的图像

_currentIndex--;

}

//偏移量的x为两个屏幕的宽,就是说明向左滑动了,就是看的之前右边的那张图片

else if(scrollView.contentOffset.x== kuan*2)

{

//对应的图像应该是变成右边的图像

_currentIndex++;

}

_currentIndex=[self indexFofEnable:_currentIndex];

[self tianJiaTuPian];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}


@end

//第二个类

#import "YZUIScrollView.h"



@interface YZUIScrollView ()<UIScrollViewDelegate>

@property(nonatomic,strong)UIImageView *imageview;

@property(nonatomic,strong)UIImage *image;//内容视图的图片

@end


@implementation YZUIScrollView


-(instancetype)initWithFrame:(CGRect)frame

{

if(self =[super initWithFrame:frame])

{

//添加内容视图

UIImageView *imageview1=[[UIImageView alloc] initWithFrame:self.bounds];

[self addSubview:imageview1];

_imageview=imageview1;

//设置最大最小倍数和代理

self.minimumZoomScale=0.5;

self.maximumZoomScale=1.5;

self.delegate=self;

//双击事件

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(shuangJi:)];

tap.numberOfTapsRequired=2;

[self addGestureRecognizer:tap];

}

return self;

}

-(void)shuangJi:(UITapGestureRecognizer *)tap

{

//当缩放比例不为1.0,还原缩放比例

if (self.zoomScale !=1.0) {

[self setZoomScale:1.0 animated:YES];

return ;

}

CGPoint location =[tap locationInView:self];

CGRect rect =CGRectMake(location.x-100, location.y-100,200,200);

[self zoomToRect:rect animated:YES];

}

//重写setImg方法

-(void)setImage:(UIImage *)image

{

//set本身的方法要完成的事必须完成

_image=image;

//设置内容视图的图片

_imageview.image=image;

}

//UIScrollViewDelegate代理方法

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

return _imageview;

}

@end