ios 裁剪圆形头像_iOS开发之裁剪圆形头像
- (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开发之裁剪圆形头像相关推荐
- ios 取设备语言_iOS开发:获取手机等设备当前的语言和地区的方法
在iOS开发过程,尤其是开发有需要做国际化的项目的时候,如果需要做本地语言国际化,需要获取到手机本地语言设置,然后向服务器请求数据的时候,需要把获取到的手机本地语言参数传给后台,然后后台根据具体的语言 ...
- ios 裁剪圆形头像_iOS开发笔记:实现圆形头像
初学iOS,记录一下自己遇到的一些问题,也希望能够对别人有所帮助 一般应用的个人头像如上图,圆形头像算是每款App中最常见的东西了,刚好最近有遇到这个问题,并且顺利解决了,其实很简单,调用layer这 ...
- ios 判断数字大小_iOS开发积累2
3.设备的CPU架构简介 模拟器: 4s~5 : i386 5s~6plus : x86_64 真机: 3gs~4s : armv7 5~5c : armv7s (静态库只要支持了armv7,就可以跑 ...
- ios支付 选择货币_iOS开发中金钱货币的计算问题
ios开发中涉及到和货币价格计算相关的,都需要注意计算精度的问题. 服务器有可能返回的金钱是int float double string NSNumber, 单纯的float.double的计算都会 ...
- ios 自定义拍照页面_iOS开发笔记:自定义相机拍照
目录 之前用AVFoundation自定义相机做了拍照与视频相关的东西,为什么要自定义呢?主要是提供更个性化的交互设计,符合app主题,对于视频来说,也便于提供更多丰富有趣的功能.前段时间整理了下拍照 ...
- ios 后台唤醒应用_IOS开发之----详解在IOS后台执行
文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文 ...
- ios 使用webview 查找_iOS开发WKWebView与JS的交互
iOS8以后,Apple公司推出了WKWebView,对比之前的UIWebView不论是处理速度还是内存性能,都有了大幅度的提升! 那么下面我就分享一下WKWebView与JS的交互. 首先使用WKW ...
- ios 给网页传值_iOS开发—页面传值汇总
情况1:A页面跳转到B页面 方法1:在页面跳转的同时,将A页面的值带到B页面 B页面的控制器中设置一个接收值的对象,并且设置一个显示值的textfield,设置outlet @property (no ...
- ios 去掉底部状态栏_iOS开发之状态栏隐藏(问题篇)
一.基本应用 相信基本的隐藏办法网上很多,这里只简单说明一下 1⃣️改变全局状态栏 1.在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppeara ...
最新文章
- 杀毒软件原理后续阶段
- 收下这个“短信验证”的最佳实践项目!
- Notepad++插件总结
- 踩坑日记:Logstash同步数据库有type字段导致同步失败
- h5 php js实验总结,H5学习_番外篇_PHP数据库操作
- “约见”面试官系列之常见面试题之第五十四篇之语义化标签(建议收藏)
- 【Java】异常和IO在Gourmet咖啡系统中的应用
- 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016
- POM (Project Object Model)简介
- 中央企业经营管理一体化总体框架
- WPS简历模板的图标怎么修改_HR眼里的优秀简历模板长这样!30份中英文优秀模板,可一键修改!...
- c语言开发环境win10,老司机解决win10系统搭建C语言开发环境的操作技巧
- 仿人机器人运动控制技术探讨
- 如何解决LabView的Active X容器中无Animation GIF Control问题
- SSH远程登录报错 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
- 大学物理·第4章刚体的转动
- 使用vue控制video视频和弹幕功能
- 江西外语外贸官网 仿写
- Linux read的用法
- 诺康得NKD完成500万天使轮融资,专注于糖化学细胞治疗
热门文章
- python字符串怎么用_零基础如何使用python处理字符串?
- linux vim复制和粘贴
- 三层神经网络实现手写字母的识别(基于tensorflow)
- React Native官方DEMO
- Java并发编程实战~ReadWriteLock~
- python自动客服排班_使用或工具的护士排班问题,在某些日子增加不同的轮班时间...
- 为什么计算机专业被称为宇宙机,量子计算机为何被称为宇宙中最强大的计算机...
- 成语json_人工智能测试爬百度成语测成语接龙
- controller属于哪一层_孺教网分享|家长层次有五层,家长们都来看看,你属于哪一层?...
- 浅入浅出理解傅里叶变换