模拟系统照相机图片裁剪的功能

模拟系统照相机图片裁剪的功能

模拟系统照相机图片裁剪的功能

效果如下:

源码:

//

//  RootViewController.m

//  ScrollView

//

//  Copyright (c) 2014年 Y.X. All rights reserved.

//



#import "RootViewController.h"



@interface RootViewController ()<UIScrollViewDelegate>



{

    BOOL tapped;

}



@property (nonatomic, strong) UIScrollView           *scrollView;

@property (nonatomic, strong) UIImageView            *imageView;

@property (strong, nonatomic) UITapGestureRecognizer *tapGesture;



@end



@implementation RootViewController



- (void)viewDidLoad

{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blackColor];

    

    // scrollView

    {

        _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];

        [self.view addSubview:_scrollView];

        

        _scrollView.center              = self.view.center;

        _scrollView.delegate            = self;

        _scrollView.layer.borderWidth   = 2.f;

        _scrollView.layer.borderColor   = [UIColor redColor].CGColor;

        _scrollView.layer.masksToBounds = NO;

        

        // 不显示滚动的条

        _scrollView.showsHorizontalScrollIndicator = NO;

        _scrollView.showsVerticalScrollIndicator   = NO;



        _scrollView.bouncesZoom      = YES;

        _scrollView.minimumZoomScale = 1.f;

        _scrollView.maximumZoomScale = 10.f;

        _scrollView.contentMode      = UIViewContentModeScaleAspectFit;

    }

    

    // 图片

    _imageView       = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];

    _imageView.image = [UIImage imageNamed:@"back"];

    _imageView.contentMode = UIViewContentModeScaleAspectFit;

    [_scrollView addSubview:_imageView];

    

    // 手势

    _tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self

                                                          action:@selector(tapRecognized:)];

    [_scrollView addGestureRecognizer:_tapGesture];

}



- (void)tapRecognized:(id)sender

{

    if (!tapped)

    {

        CGPoint tapPoint = [self.tapGesture locationOfTouch:0

                                                     inView:self.tapGesture.view];

        CGRect zoomRect = [self zoomRectForScrollView:self.scrollView

                                            withScale:6.0f

                                           withCenter:tapPoint];

        [self.scrollView zoomToRect:zoomRect animated:YES];

        tapped = YES;

    }

    else

    {

        [self.scrollView setZoomScale:1.0f animated:YES];

        tapped = NO;

    }

}





- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView

                      withScale:(float)scale

                     withCenter:(CGPoint)center

{

    CGRect zoomRect;

    zoomRect.size.height = scrollView.frame.size.height / scale;

    zoomRect.size.width  = scrollView.frame.size.width / scale;

    zoomRect.origin.x    = center.x - (zoomRect.size.width / 2.0);

    zoomRect.origin.y    = center.y - (zoomRect.size.height / 2.0);

    return zoomRect;

}



#pragma mark - UIScrollView代理方法

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

{

    return self.imageView;

}



@end

一个需要注意的地方:

需要将图片的view在UIScrollView的代理方法中传递出去

模拟系统照相机图片裁剪的功能

至于这有怎么样的用处,如果有需求需要你截取图片的某一个区域,这时候你就知道有啥用了:)

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(图片)