实现与效果

  • 微调角度
  • 90°角旋转
  • 改变宽高比例
  • 旋转和微调过程中适应边框填充边界
  • 源码

微调角度


- (void)beginTrackingWithTouch {// 开始微调角度}- (void)continueTrackingWithTouch:(CGFloat)value changeValue:(CGFloat)changeValue {// 调整中[self.imageCropperView setRotationAngle:changeValue];}- (void)endTrackingWithTouch {// 微调角度结束}

90°角旋转


- (void)rotate:(id)sender {[self.imageCropperView rotation:YES];}

改变宽高比例


- (void)resizeWHScale:(id)sender {[UIView animateWithDuration:0.15 animations:^{self.imageCropperView.frame = [self imageCropViewFrame:self.currType];[self.imageCropperView setResizeWHRatio:self.currScale animated:NO];}completion:nil];

其他可设置属性


/** 裁剪框颜色 / Mask layer color */**@property (nonatomic, strong) UIColor *maskColor;/** 裁剪框阴影 / Mask frame color */**@property (nonatomic, strong) UIColor *shadowColor;/** 网格线颜色 / Gridlines color */**@property (nonatomic, strong) UIColor *shapeLayerColor;/** 是否允许双指自由旋转  / Allow two fingers to rotate freely ,default value is YES */**@property (nonatomic, assign, getter=isRotationEnabled) BOOL rotationEnabled;/** 是否允许双击重置 / Allow double click Reset , default value is YES */**@property (nonatomic, assign, getter=isDoubleResetEnabled) BOOL doubleResetEnabled;/** 是否为顺势转旋转 / Is it clockwise rotation , default value is NO */**@property (nonatomic, assign, getter=isClockwiseRotation) BOOL clockwiseRotation;/** 重置 / reset */- (void)reset:(BOOL)animated;/** 设置【裁剪比例】 / Setup the cut scale */**@property (nonatomic, assign) CGSize resizeWHRatio;- (void)setResizeWHRatio:(CGSize)resizeWHRatio;- (void)setResizeWHRatio:(CGSize)resizeWHRatio animated:(BOOL)animated;/** 设置【旋转角度】/ Setup the rotation angle */@property (nonatomic, assign) CGFloat rotationAngle;- (void)rotation:(BOOL)animated;- (void)setRotationAngle:(CGFloat)rotationAngle;- (void)setRotationAngle:(CGFloat)rotationAngle animated:(BOOL)animated;

关于旋转和微调过程中适应边框填充边界的计算方式

旋转过程中,为防止漏出黑色背景区域,需要在调整过程中对 scrollview 进行缩放,以满足图片充满裁剪区域,计算方式如下:

即:
scrollview.width = CGRectGetWidth(maskRect) * cos(a) + CGRectGetHeight(maskRect) * sin(a);
scrollview.height = CGRectGetHeight(maskRect) * cos(a) + CGRectGetWidth(maskRect) * sin(a);

源码

有兴趣的可以下载看下,希望大佬多多点星。

https://github.com/legokit/LEGOImageCropper

GitHub - legokit/LEGOImageCropper: imageCropper, crop image, Picture cropper, support to resizeWHScale, set size, rotate angle, fine adjust angle, image crop. 图片裁剪,支持大小缩放,设置大小,旋转角度,微调角度,裁剪产品图片。。

https://www.jianshu.com/p/16fb4ddf0890

iOS 图片裁剪,旋转角度,微调角度 LEGOImageCropper相关推荐

  1. ios 图片裁剪框架_iOS图片裁剪器 – RSKImageCropper

    RSKImageCropper iOS图片裁剪器,类似Contacts应用中的图片定位美化. 基础使用方法 导入类header. #import Just create a view controll ...

  2. iOS 图片裁剪(用户头像裁剪)

    图片裁剪 把一张图片裁剪为指定的样式,比如常见的用户头像 思路: 在图片的基础上绘制时,需要创建一个位图上下文 确定裁剪区域(超出裁剪区域的都将被清除) 绘制图片 从位图上下文中获取图片 关闭上下文 ...

  3. ios 图片裁剪-制作圆形QQ头像

    /**  *  图片裁剪  裁剪原理:  先在控制器上确定一个区域,然后再把需要裁剪的图片放在该区域上面,超出区域的图片都不显示  *  *  @param rect  */ -(void) draw ...

  4. DDGScreenShot —iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的方法...

    写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...

  5. ios 图片裁剪框架_iOS 图片裁剪与修改

    最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解 ...

  6. 浮士德html5图片裁剪器2016开源版

    前言 最近刚刚好整理浮士德头像裁剪的flash版本,为了某些低级浏览器的兼容着想,既然已经做好了flash版本了,那么,现代浏览器的html5版本和ipad版,移动版也要做一些处理和打包. 兼容性 兼 ...

  7. DDGScreenShot--iOS 图片裁剪,圆角设置,你还用cornerRadius,还有更高级的方法

    写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...

  8. 一个利用html5的图片裁剪功能(已解决ios压扁缩放等bug)

    推荐: 这一篇文章是早年为了解决图片裁剪的探索性文章,现在已经开放出了falsh版及html5版本的图片裁剪插件,各位有时间可以看看: 浮士德html5图片裁剪器2016开源版 浮士德头像裁剪flas ...

  9. ios 将矩形图片裁剪成圆形图片

    在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBound ...

最新文章

  1. 技术图文:如何利用 C# 实现 误差反向传播 学习规则?
  2. redis 计数器 java_Redis 实践汇总和使用建议。
  3. 汇编语言——100个数中的最大数
  4. guava 集合转换_Guava的Collections2:过滤和转换Java集合
  5. 【数据库系统】形式化查询语言の关系代数
  6. LeCun自曝使用C语言23年之久,2年前才用Python,还曾短暂尝试Lua
  7. matlab 下采样_Lattice规划与Matlab实现(1)
  8. 堆排序c语言6,C语言:十种排序(七) - 堆排序
  9. 【django】三、常用的模板标签和过滤器
  10. 漏洞分析C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)
  11. 我珍藏的神兵利器 - 效率工具for Win[转]
  12. LATEX参考文献添加文章doi号并嵌入超链接+IEEE期刊缩写查询
  13. RestTemplate使用实战-exchange方法讲解
  14. 燕东微通过注册:预计年营收超20亿 亦庄国投与京东方是股东
  15. 智能电子后视镜MFC01-LCD产品标定说明
  16. 二进制和 四,八,十,十六,三十二进制的转换
  17. 基于数据分析,是否自动档汽车比手动挡更耗油
  18. 操作系统:Linux进程与线程
  19. bzoj 3837 pa2013 Filary
  20. SAR ADC系列16:CDAC上机实践+作业

热门文章

  1. 58 mysql 军规_58 到家 MySQL 军规升级版
  2. Unsharp Mask(USM)锐化算法的的原理及其实现
  3. 在Windows操作系统上使用rtsp simple server和ffmpeg推送录屏视频流
  4. 软件测试自学乐器儿童画,面对丰富多彩的儿童画世界我们怎样欣赏
  5. AT89C51定时器/计数器的使用
  6. python的dataframe的mul_python pandas DataFrame.mul用法及代码示例
  7. 计算机机房雷电接地,计算机机房的雷电防护途径研究
  8. 麻省理工学院发起人工智能项目MIT IQ
  9. Gmail无法显示邮件图片的解决方法
  10. PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用——进一步学习的走向和有用的资源