首页 > 代码库 > 模拟系统照相机图片裁剪的功能
模拟系统照相机图片裁剪的功能
模拟系统照相机图片裁剪的功能
效果如下:
源码:
//// 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的代理方法中传递出去
至于这有怎么样的用处,如果有需求需要你截取图片的某一个区域,这时候你就知道有啥用了:)
模拟系统照相机图片裁剪的功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。