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

效果如下:

源码:

//
//  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:selfaction:@selector(tapRecognized:)];[_scrollView addGestureRecognizer:_tapGesture];
}- (void)tapRecognized:(id)sender
{if (!tapped){CGPoint tapPoint = [self.tapGesture locationOfTouch:0inView:self.tapGesture.view];CGRect zoomRect = [self zoomRectForScrollView:self.scrollViewwithScale:6.0fwithCenter:tapPoint];[self.scrollView zoomToRect:zoomRect animated:YES];tapped = YES;}else{[self.scrollView setZoomScale:1.0f animated:YES];tapped = NO;}
}- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollViewwithScale:(float)scalewithCenter:(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的代理方法中传递出去

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

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

  1. H5移动端记一次图片裁剪合成功能

    之前做了一个h5项目,核心功能是上传图片,进行裁剪后与其他页面部分合成到一个图片作为海报进行保存.实际做出来的功能如下所示,这里我是用pc浏览器的移动端页面模拟进行录制的,实际上在手机上的效果会更好一 ...

  2. Java实现图片裁剪预览功能

    Java实现图片裁剪预览功能 在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章! 需要插件:jQuery Jcrop 后端代码: package org.csg.upload;imp ...

  3. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  4. 如何正常使用ckeditor5图片裁剪功能

    1 安装 npm install --save @ckeditor/ckeditor5-build-decoupled-document 2 引入 import CKEditor from '@cke ...

  5. 微信小程序图片裁剪功能的实现

    文章目录 图片上传与处理 图片尺寸适配 图片显示与裁剪框 裁剪框的拖动与缩放 增加canvas并裁剪图片 保存图片到相册 总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪 ...

  6. 58行html/js代码实现图片裁剪并保存功能

    58行html/js代码实现图片裁剪保存功能 <input type="file" id="file-input" accept="image/ ...

  7. android 壁纸 裁剪,Android图片裁剪之自由裁剪

    客户的需求都是非常怪的.我有时候在给客户做项目的时候就想骂客户是sb.可是请你相信我,等你有需求,自己变成客户的时候,给你做项目的哥哥肯定也会骂你是sb. 是这种,客户须要做一个图片上传的功能,这个图 ...

  8. jQuery 图片裁剪插件 Jcrop

    Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 ...

  9. android 图片裁剪库,(译)uCrop介绍 —— 我们自己的Android图片裁剪库

    我们在 Yalantis 开发了许多不同的 Android 应用,经验告诉我们,几乎在所有的应用中,都需要图片裁剪的功能.图片裁剪的用途很广,从简单的用户头像调整到图片的比例裁剪.灵活变换等各种复杂的 ...

最新文章

  1. SpringBoot-web开发(三): 模板引擎Thymeleaf
  2. libcurl下载限速编程调研
  3. MAT之GA:GA优化BP神经网络的初始权值、阈值,从而增强BP神经网络的鲁棒性
  4. selenium V1.0和V2.0差别对比
  5. vscode + plantuml实现uml的编写
  6. 最新量子通信芯片曝光!大小仅为现有装置的千分之一
  7. 自动化无法定位的原因_Appium Android 自动化测试 -- 元素定位
  8. Java使用Selenium几个例子
  9. 最快的摘要HASH算法测试
  10. 弱电工程行业管理软件
  11. Appium相对坐标定位元素
  12. problem 1278
  13. 计算机存储容量单位的倍数关系,存储器容量单位有哪些,它们之间的关系是什么...
  14. 2012年移动SEO启示
  15. Cohn-Kanade数据库
  16. 第二届移动3C网络研讨会举行
  17. C语言实现鸡尾酒排序
  18. 微信小程序按钮大小修改,字体修改
  19. 博客搬家,欢迎光临!
  20. MIUI11系统详细卡刷开发版获取Root超级权限的步骤

热门文章

  1. bitcoin转账api,python3.7
  2. python分析nginx日志,每分钟nginx请求超过10ms的比例
  3. JavaScript中的JS引擎的执行机制
  4. 构建富互联网应用程序监控工作流和流程(1)
  5. OkHttp3源码详解(三) 拦截器-RetryAndFollowUpInterceptor
  6. Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率
  7. effectivec++条款18,让接口容易被正确使用,不宜被吴勇
  8. 初入react-redux (基于webpack babel的react应用框架)
  9. Kickstart的配置文件anaconda-ks.cfg解析
  10. Silverlight开发历程—(绘制矢量图之Polyline 和 Polygon)