CheckPicViewController.m 4.92 KB
Newer Older
admin's avatar
admin committed
1 2 3 4 5 6 7 8 9 10
//
//  CheckPicViewController.m
//  PTools
//
//  Created by 侯振兴 on 15/8/11.
//  Copyright (c) 2015年 moobox. All rights reserved.
//

#import "CheckPicViewController.h"

11 12 13 14
@interface CheckPicViewController ()<UIScrollViewDelegate> {
    CGFloat _imageViewW;
    CGFloat _imageViewH;

admin's avatar
admin committed
15 16 17
}

@property (nonatomic, strong) UIImageView *takeImageView;
18
@property (nonatomic, strong) UIScrollView *scrollView;
admin's avatar
admin committed
19 20 21 22 23 24 25
@end

@implementation CheckPicViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
admin's avatar
admin committed
26 27 28 29
    self.view.backgroundColor = [UIColor whiteColor];
    CGFloat imageW = self.checkImage.size.width;
    CGFloat imageH = self.checkImage.size.height;
    
30
    //CGFloat imageViewW,imageViewH;
admin's avatar
admin committed
31 32
    
    if ((imageH / imageW) > (kScreenHeight / kScreenWidth)) {
33 34
        _imageViewH = kScreenHeight;
        _imageViewW = imageW * (kScreenHeight / imageH);
admin's avatar
admin committed
35
    } else {
36 37
        _imageViewH = imageH * (kScreenWidth / imageW);
        _imageViewW = kScreenWidth;
admin's avatar
admin committed
38 39 40
    }
    
    
41
    self.takeImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, _imageViewW, _imageViewH)];
admin's avatar
admin committed
42
    _takeImageView.center = CGPointMake(kScreenWidth / 2, (kScreenHeight - 64) / 2);
admin's avatar
admin committed
43
    _takeImageView.image = _checkImage;
44
    _takeImageView.userInteractionEnabled = YES;
admin's avatar
admin committed
45
    [self.view addSubview:_takeImageView];
admin's avatar
admin committed
46 47 48 49 50 51 52 53 54
    
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    backBtn.frame = CGRectMake(0, 0, 30, 44);
    
    [backBtn setImage:[UIImage imageNamed:@"back_btn"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(doBack:) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    self.navigationItem.leftBarButtonItem = backItem;
55 56 57 58
    
//    self.scrollView.frame = CGRectMake(0, 0, _imageViewW, _imageViewH);
//    _scrollView.center = CGPointMake(kScreenWidth / 2, (kScreenHeight - 64) / 2);
//    self.scrollView.contentSize = CGSizeMake(_imageViewW, _imageViewH);
admin's avatar
admin committed
59

admin's avatar
admin committed
60

admin's avatar
admin committed
61 62 63 64 65
}
-(void)doBack:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}
admin's avatar
admin committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82


- (void) addGestureRecognizerToView:(UIView *)view {
    // 缩放手势
    UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];
    [view addGestureRecognizer:pinchGestureRecognizer];
    
    // 移动手势
    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
    [view addGestureRecognizer:panGestureRecognizer];
}

// 处理缩放手势
- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
    UIView *view = pinchGestureRecognizer.view;
    if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
83 84
        if (_takeImageView.frame.size.width < _imageViewW) {
            _takeImageView.frame = CGRectMake(0, (kScreenHeight - 64 - _imageViewH) / 2 , _imageViewW, _imageViewH);
admin's avatar
admin committed
85 86
            //让图片无法缩得比原图小
        }
87 88
        if (_takeImageView.frame.size.width > 2 * _imageViewW) {
            _takeImageView.frame = CGRectMake(-_imageViewW, -_imageViewH, 2 * _imageViewW, 2 * _imageViewH);
admin's avatar
admin committed
89 90 91
        }
        pinchGestureRecognizer.scale = 1;
    }
92
    
admin's avatar
admin committed
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
}

// 处理拖拉手势
- (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer
{
    UIView *view = panGestureRecognizer.view;
    if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [panGestureRecognizer translationInView:view.superview];
        [view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];
        [panGestureRecognizer setTranslation:CGPointZero inView:view.superview];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131

- (UIScrollView *)scrollView
{
    if (!_scrollView) {
        _scrollView = [[UIScrollView alloc] init];
        _scrollView.delegate = self;
        _scrollView.maximumZoomScale = 2.0;
        _scrollView.minimumZoomScale = 1.0;
        [self.view addSubview:_scrollView];
    }
    return _scrollView;
}


-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    NSLog(@"image.siz=== %@ scrll.contentSize = %@  ", NSStringFromCGSize(_takeImageView.size), NSStringFromCGSize(scrollView.contentSize) );
    return _takeImageView;
}


admin's avatar
admin committed
132 133 134 135 136 137 138 139 140 141 142
/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end