- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//设置视图控制器的滑动视图大小,为yes时,自动从statuBar、navigationBar下面显示
self.automaticallyAdjustsScrollViewInsets = NO;
self.title = @"图片浏览";
//创建滑动视图
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];
scrollView.delegate = self;
for (int i = 0; i < 5; i ++) {
PhotoScrollView *photoScrollView = [[PhotoScrollView alloc]initWithFrame:CGRectMake(scrollView.bounds.size.width * i, 0, scrollView.bounds.size.width, scrollView.bounds.size.height)];
photoScrollView.tag = i + 100;
//传值
photoScrollView.img = [UIImage imageNamed:[NSString stringWithFormat:@"%d.JPG", i]];
[scrollView addSubview:photoScrollView];
}
//取消滑动条的显示
scrollView.showsHorizontalScrollIndicator = NO;
//设置分页
scrollView.pagingEnabled = YES;
//设置内容尺寸
scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width * 5,scrollView.bounds.size.height);
[self.view addSubview:scrollView];
}
#pragma mark -UIScrollViewDelegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//获取当前下标
NSInteger nowIndex = scrollView.contentOffset.x / scrollView.bounds.size.width;
if (nowIndex != _lastIndex) {
PhotoScrollView *photoScrollView = (PhotoScrollView *)[scrollView viewWithTag:_lastIndex + 100];
//还原
photoScrollView.zoomScale = 1;
}
_lastIndex = nowIndex;
}
}
@end
@implementation PhotoScrollView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_imgView = [[UIImageView alloc]initWithFrame:self.bounds];
[self addSubview:_imgView];
//设置缩放的最大倍数
self.maximumZoomScale = 3;
self.minimumZoomScale = 1;
//取消滚动条
self.showsHorizontalScrollIndicator = NO;
self.showsVerticalScrollIndicator = NO;
//设置代理
self.delegate = self;
//创建单击手势
UITapGestureRecognizer *navTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(navTapAction:)];
[self addGestureRecognizer:navTap];
//创建双击手势
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
doubleTap.numberOfTapsRequired = 2;
[self addGestureRecognizer:doubleTap];
[navTap requireGestureRecognizerToFail:doubleTap];
}
return self;
}
- (void)setImg:(UIImage *)img
{
if (_img != img) {
_img = img;
_imgView.image = self.img;
}
}
- (void)navTapAction:(UITapGestureRecognizer *)tap
{
//隐藏、显示导航栏
BOOL show = !self.viewController.navigationController.navigationBarHidden;
[self.viewController.navigationController setNavigationBarHidden:show animated:YES];
//隐藏、显示电池条
[[UIApplication sharedApplication] setStatusBarHidden:show withAnimation:UIStatusBarAnimationFade];
}
- (void)tapAction:(UITapGestureRecognizer *)tap
{
if (self.zoomScale > 1) {
//缩小
[self setZoomScale:1 animated:YES];
}else{
//放大
[self setZoomScale:3 animated:YES];
}
}
#pragma mark -UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imgView;
}
@end
-(UIViewController *)viewController
{
UIResponder *next = self.nextResponder;
do {
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
}
next = next.nextResponder;
} while (next);
return nil;
}