iOSQuartz2D-03-定制个性头像

效果图


  • 将一张图片剪切成圆形
  • 在图片周围显示指定宽度和颜色的边框

实现思路


  • 效果图中主要由不同尺寸的两大部分组成

    • 蓝色的背景区域,尺寸等于图片的尺寸加上边框的尺寸
    • 图片区域,尺寸等于图片的尺寸
  • 绘制一个圆形背景区域,用边框颜色填充
  • 绘制一个圆形的图片区域,设置不显示超出的部分

实现步骤


  • 加载需要显示的图片

    UIImage *image = [UIImage imageNamed:@"资源中图片的名字"];
  • 初始化用到的变量
    //图片的宽宽高
    CGFloat imageWH = image.size.width;
    //边界的宽度
    CGFloat border = 1;
    //背景区域的宽高
    CGFloat ovalWH = imageWH + 2 * border;
  • 开启图形上下文(尺寸为背景区域的尺寸
    //设置图形上下文的尺寸
    CGSize size = CGSizeMake(ovalWH, ovalWH);
    //开启图形上下文
    UIGraphicsBeginImageContextWithOptions(size, NO, 0);
  • 绘制背景区域
    //绘制封闭的圆形路径
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];
    //设置填充颜色
    [[UIColor blueColor] set];
    //渲染所绘制的区域
    [path fill];
  • 绘制图片区域
    //绘制封闭的圆形区域
    UIBezierPath *clipPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
    //设置超出区域的内容剪掉(不显示)
    [clipPath addClip];
    //见图片绘制到圆形区域内,从点(border, border)开始
    [image drawAtPoint:CGPointMake(border, border)];
  • 从图形上下文中取出绘制的图片
    UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
  • 将图片显示到imageView上
    self.imageView.image = clipImage;
  • 关闭图形上下文
    UIGraphicsEndImageContext();

    本博客的最新状态将会同步到新浪微博账号:世俗孤岛

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 22:27:19

iOSQuartz2D-03-定制个性头像的相关文章

Valine中如何显示个性头像

头像配置 Valine 目前使用的是Gravatar 作为评论列表头像. 请自行登录或注册Gravatar,然后修改自己的头像. 评论的时候,留下在Gravatar注册时所使用的邮箱即可. 感谢gravatar.cat.net提供的镜像服务. 如果你修改了头像后发现没有更新,请不要慌张,因为gravatar.cat.net 有七天的缓存期,安静的等待吧~ 目前非自定义头像有以下7种默认值可选: 参数值 表现形式 备注 空字符串'' Gravatar官方图形 mp 神秘人(一个灰白头像) iden

iOS开发——定制圆形头像与照相机图库的使用

如今的App都很流行圆形的头像,比方QQ右上角的头像,今日头条的头像等等.这已经成为App设计的趋势了.今天我们就来简单实现一下这个功能,我还会把从手机拍照中或者图库中取出作为头像的照片存储到应用程序沙盒中. 下次进入应用的时候还会显示该头像. 演示样例代码上传至:https://github.com/chenyufeng1991/AvatarPhoto  . (1)该demo使用storyboard进行实现.首先拖入一个ImageView用来显示头像和一个button. 并拖拽到代码中进行绑定

10分钟教你用Python玩转微信之抓取好友个性签名制作词云

01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词云: 02 环境准备 Python版本:3.6.0系统平台:Windows 10 X64IDE:pycharm 相关模块:re模块:itchat模块:jieba模块:import matplotlib.pyplot模块:wordcloud模块:以及一些Python自带的模块. 03 获取个性签名 首

转~新手必备网站包含的几个模块

网站包含那几个模块: 1. 一个绘画大师个人网站:个人简介.作品集.经验之谈.跟网友的一个交流互动. 网站包括哪些模块,作用是什么? 这个可能是大家最经常听到的疑问,就是网站怎么操作,怎么管理,现在的网站,都是通过后台来进行操作,用一个又一个功能模块来支撑起来整个网站的正常运行.管理都是傻瓜式的.这些模块是什么,我们来看看吧. ■ 信息发布系统◆ 简介    网站内容发布系统,又称为信息发布系统,是将网页上的某些需要经常变动的信息,类似新闻.新产品发布和业界动态等更新信息集中管理,并通过信息的某

APK可视化修改工具 APK改之理(APK IDE)

标 题: [下载]APK可视化修改工具:APK改之理(APK IDE)作 者: 青椒时 间: 2013-04-10,11:03:12链 接: http://bbs.pediy.com/showthread.php?t=168001 小米人APK改之理(Apk IDE)是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool.Dex2jar.JD-GUI等Apk修改工具,集Apk反编译.Apk打包.Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字(支持单行代码或多行代码段)搜

对于Linux系统管理员很有用的16个在线工具

1. ExplainShell.com 命令解释 ??对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令式如何工作的,这样可以避免不必要的错误出现:也是一个很好的学习命令的方式 2. BashrcGenerator.com 定制个性命令提示符 ??简单说就是个性化生成命令提示符,可将生成的代码写入到用户家目录的.bashrc或者可以设置全局变量文件/etc/profile对所有用户生效 ??可参考:http://stackoverflow.com/questio

微信公众平台开发入门--PHP,实现自动回复文本,图文,点击事件

一页代码实现微信基本回复和点击事件功能,部署上去sae或者bae,妥妥的基本免费的服务器 不懂代码都基本每个人都可以做自己的微信公众号了 <?php define("TOKEN", "mzh"); //换成你的token $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { //验证微信 $wechatObj->valid(); }else{ //回复消息 $we

进程管理工具htop/glances/dstat的使用

友情提醒:文件涉及到的实验平台为vmware workstation 10 + Centos 6.6 X86_64,所述命令请谨慎使用. Centos linux中自带了很多进程查看管理工具,诸如:ps ,top,vmstat除了这些之外还有很多提供类似功能的工具程序,这其中有三款高大上的工具 htop/glances/dstat.今天就来认识一下他们. 工具一,htop:令人惊艳的类top工具 htop是款类似于top的工具,但是htop提供的功能却是top望尘莫及. 1.安装 htop非系统

转:程序员必知:16个超有用的在线工具

16个超有用的在线工具,程序员们,快来MARK吧! 1. ExplainShell.com——命令解释 Linux用户每天都会写各种命令和脚本,可以使用这个网站工具来查看命令式如何工作的,这样可以避免不必要的错误出现,也是一个很好的学习命令的方式. 2. BashrcGenerator.com——定制个性命令提示符 简单说就是个性化生成命令提示符,可将生成的代码写入到用户家目录的 .bashrc 或者可以设置全局变量文件/etc/profile 对所有用户生效. 3.Vim-adventures