- (void)viewDidLoad {

[super viewDidLoad];

//加载图片

UIImage *image = [UIImage imageNamed:@"菲哥"];

//获取图片尺寸

CGSize size = image.size;

//开启位图上下文

UIGraphicsBeginImageContextWithOptions(size, NO, 0);

//创建圆形路径

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

//设置为裁剪区域

[path addClip];

//绘制图片

[image drawAtPoint:CGPointZero];

//获取裁剪后的图片

_imageView.image = UIGraphicsGetImageFromCurrentImageContext();

//关闭上下文

UIGraphicsEndImageContext();

}

再来一张菲哥的头像

如果想要在圆形头像外加一个边框,思路是先绘制一个大圆,然后在这个圆尺寸范围内绘制一个图片大小的圆。

- (void)viewDidLoad {

[super viewDidLoad];

//加载图片

UIImage *image = [UIImage imageNamed:@"大菲哥"];

//设置边框宽度

CGFloat border = 3;

CGFloat imageWH = image.size.width;

//计算外圆的尺寸

CGFloat ovalWH = imageWH + 2 * border;

//开启上下文

UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);

//画一个大的圆形

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];

[[UIColor orangeColor]set];

[path fill];

//设置裁剪区域

UIBezierPath *path1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];

[path1 addClip];

//绘制图片

[image drawAtPoint:CGPointMake(border, border)];

//从上下文中获取图片

_imageView.image = UIGraphicsGetImageFromCurrentImageContext();

//关闭上下文

UIGraphicsEndImageContext();

}

效果如图:

屏幕截图:

原理就是把屏幕上控件的layer渲染到上下文中

- (void)viewDidLoad {

[super viewDidLoad];

//开启上下文

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);

//获取上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

//把控件上的图层渲染到上下文

[self.view.layer renderInContext:ctx];

//获取上下文中的图片

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

//关闭上下文

UIGraphicsEndImageContext();

//保存图片到相册

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

}

ios 裁剪圆形头像_iOS开发之裁剪圆形头像相关推荐

  1. ios 取设备语言_iOS开发:获取手机等设备当前的语言和地区的方法

    在iOS开发过程,尤其是开发有需要做国际化的项目的时候,如果需要做本地语言国际化,需要获取到手机本地语言设置,然后向服务器请求数据的时候,需要把获取到的手机本地语言参数传给后台,然后后台根据具体的语言 ...

  2. ios 裁剪圆形头像_iOS开发笔记:实现圆形头像

    初学iOS,记录一下自己遇到的一些问题,也希望能够对别人有所帮助 一般应用的个人头像如上图,圆形头像算是每款App中最常见的东西了,刚好最近有遇到这个问题,并且顺利解决了,其实很简单,调用layer这 ...

  3. ios 判断数字大小_iOS开发积累2

    3.设备的CPU架构简介 模拟器: 4s~5 : i386 5s~6plus : x86_64 真机: 3gs~4s : armv7 5~5c : armv7s (静态库只要支持了armv7,就可以跑 ...

  4. ios支付 选择货币_iOS开发中金钱货币的计算问题

    ios开发中涉及到和货币价格计算相关的,都需要注意计算精度的问题. 服务器有可能返回的金钱是int float double string NSNumber, 单纯的float.double的计算都会 ...

  5. ios 自定义拍照页面_iOS开发笔记:自定义相机拍照

    目录 之前用AVFoundation自定义相机做了拍照与视频相关的东西,为什么要自定义呢?主要是提供更个性化的交互设计,符合app主题,对于视频来说,也便于提供更多丰富有趣的功能.前段时间整理了下拍照 ...

  6. ios 后台唤醒应用_IOS开发之----详解在IOS后台执行

    文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文 ...

  7. ios 使用webview 查找_iOS开发WKWebView与JS的交互

    iOS8以后,Apple公司推出了WKWebView,对比之前的UIWebView不论是处理速度还是内存性能,都有了大幅度的提升! 那么下面我就分享一下WKWebView与JS的交互. 首先使用WKW ...

  8. ios 给网页传值_iOS开发—页面传值汇总

    情况1:A页面跳转到B页面 方法1:在页面跳转的同时,将A页面的值带到B页面 B页面的控制器中设置一个接收值的对象,并且设置一个显示值的textfield,设置outlet @property (no ...

  9. ios 去掉底部状态栏_iOS开发之状态栏隐藏(问题篇)

    一.基本应用 相信基本的隐藏办法网上很多,这里只简单说明一下 1⃣️改变全局状态栏 1.在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppeara ...

最新文章

  1. 杀毒软件原理后续阶段
  2. 收下这个“短信验证”的最佳实践项目!
  3. Notepad++插件总结
  4. 踩坑日记:Logstash同步数据库有type字段导致同步失败
  5. h5 php js实验总结,H5学习_番外篇_PHP数据库操作
  6. “约见”面试官系列之常见面试题之第五十四篇之语义化标签(建议收藏)
  7. 【Java】异常和IO在Gourmet咖啡系统中的应用
  8. 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016
  9. POM (Project Object Model)简介
  10. 中央企业经营管理一体化总体框架
  11. WPS简历模板的图标怎么修改_HR眼里的优秀简历模板长这样!30份中英文优秀模板,可一键修改!...
  12. c语言开发环境win10,老司机解决win10系统搭建C语言开发环境的操作技巧
  13. 仿人机器人运动控制技术探讨
  14. 如何解决LabView的Active X容器中无Animation GIF Control问题
  15. SSH远程登录报错 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
  16. 大学物理·第4章刚体的转动
  17. 使用vue控制video视频和弹幕功能
  18. 江西外语外贸官网 仿写
  19. Linux read的用法
  20. 诺康得NKD完成500万天使轮融资,专注于糖化学细胞治疗

热门文章

  1. python字符串怎么用_零基础如何使用python处理字符串?
  2. linux vim复制和粘贴
  3. 三层神经网络实现手写字母的识别(基于tensorflow)
  4. React Native官方DEMO
  5. Java并发编程实战~ReadWriteLock~
  6. python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...
  7. 为什么计算机专业被称为宇宙机,量子计算机为何被称为宇宙中最强大的计算机...
  8. 成语json_人工智能测试爬百度成语测成语接龙
  9. controller属于哪一层_孺教网分享|家长层次有五层,家长们都来看看,你属于哪一层?...
  10. 浅入浅出理解傅里叶变换