123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- //
- // HUPhotoBrowserCell.m
- // HUPhotoBrowser
- //
- // Created by mac on 16/2/24.
- // Copyright (c) 2016年 jinhuadiqigan. All rights reserved.
- //
- #import "HUPhotoBrowserCell.h"
- #import "hu_const.h"
- //#import "UIImageView+HUWebImage.h"
- @interface HUPhotoBrowserCell () <UIScrollViewDelegate>
- @property (nonatomic, strong) UIScrollView *scrollView;
- @property (nonatomic,strong) UITapGestureRecognizer *doubleTap;
- @property (nonatomic,strong) UITapGestureRecognizer *singleTap;
- @end
- @implementation HUPhotoBrowserCell
- - (instancetype)initWithFrame:(CGRect)frame {
- self = [super initWithFrame:frame];
- if (self) {
- self.backgroundColor = [UIColor blackColor];
- [self youpaifsetupView];
- [self addGestureRecognizer:self.singleTap];
- [self addGestureRecognizer:self.doubleTap];
- }
- return self;
- }
- - (void)youpaifsetupView {
- _scrollView = [[UIScrollView alloc] init];
- _scrollView.backgroundColor = [UIColor blackColor];
- _scrollView.showsHorizontalScrollIndicator = NO;
- _scrollView.showsVerticalScrollIndicator = NO;
- _scrollView.maximumZoomScale = 2;
- _scrollView.minimumZoomScale = 0.5;
- _scrollView.delegate = self;
- [self addSubview:_scrollView];
-
- UIImageView *imageView = [[UIImageView alloc] init];
- imageView.contentMode = UIViewContentModeScaleAspectFit;
- [_scrollView addSubview:imageView];
- _imageView = imageView;
-
- }
- - (void)resetZoomingScale {
-
- if (self.scrollView.zoomScale !=1) {
- self.scrollView.zoomScale = 1;
- }
-
- }
- - (void)layoutSubviews {
- [super layoutSubviews];
-
- _scrollView.frame = self.bounds;
- _imageView.frame = _scrollView.bounds;
- }
- - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
- return self.imageView;
- }
- #pragma mark UIScrollViewDelegate
- - (void)scrollViewDidZoom:(UIScrollView *)scrollView {
- self.imageView.center = [self centerOfScrollViewContent:scrollView];
- }
- - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
- [[NSNotificationCenter defaultCenter] postNotificationName:kPhotoCellDidZommingNotification object:_indexPath];
- }
- #pragma mark - gesture handler
- - (void)doubleTapGestrueHandle:(UITapGestureRecognizer *)sender {
- CGPoint p = [sender locationInView:self];
- if (self.scrollView.zoomScale <=1.0) {
- CGFloat scaleX = p.x + self.scrollView.contentOffset.x;
- CGFloat scaley = p.y + self.scrollView.contentOffset.y;
- [self.scrollView zoomToRect:CGRectMake(scaleX, scaley, 10, 10) animated:YES];
- }
- else {
- [self.scrollView setZoomScale:1.0 animated:YES];
- }
- }
- - (void)singleTapGestrueHandle:(UITapGestureRecognizer *)sender {
- if (self.tapActionBlock) {
- self.tapActionBlock(sender);
- }
-
- }
- #pragma mark - private
- - (CGPoint)centerOfScrollViewContent:(UIScrollView *)scrollView {
- CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width)?
- (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;
- CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height)?
- (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;
- CGPoint actualCenter = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX,
- scrollView.contentSize.height * 0.5 + offsetY);
- return actualCenter;
- }
- //- (void)configureCellWithURLStrings:(NSString *)URLStrings {
- // // self.imageView.image = self.placeholderImage;
- // NSURL *url = [NSURL URLWithString:URLStrings];
- //// [[HUWebImageDownloader sharedInstance] downloadImageWithURL:url completed:^(UIImage *image, NSError *error, NSURL *imageUrl) {
- //// self.imageView.image = image;
- //// }];
- // [self.imageView hu_setImageWithURL:url placeholderImage:self.placeholderImage completed:^(UIImage *image, NSError *error, NSURL *imageUrl) {
- // if (image) {
- // [[NSNotificationCenter defaultCenter] postNotificationName:kPhotoCellDidImageLoadedNotification object:nil];
- // }
- // }];
- //}
- #pragma mark - getter
- - (UITapGestureRecognizer *)doubleTap {
- if (!_doubleTap) {
- _doubleTap =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestrueHandle:)];
- _doubleTap.numberOfTapsRequired = 2;
- _doubleTap.numberOfTouchesRequired = 1;
- }
- return _doubleTap;
- }
- - (UITapGestureRecognizer *)singleTap {
- if (!_singleTap) {
- _singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestrueHandle:)];
- _singleTap.numberOfTapsRequired = 1;
- _singleTap.numberOfTouchesRequired = 1;
- [_singleTap requireGestureRecognizerToFail:self.doubleTap];
- }
- return _singleTap;
- }
- @end
|