博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绘制图片
阅读量:6801 次
发布时间:2019-06-26

本文共 2132 字,大约阅读时间需要 7 分钟。

typedef NS_ENUM(NSInteger,DWContentMode)//图片填充模式{    DWContentModeScaleAspectFit,//适应模式    DWContentModeScaleAspectFill,//填充模式    DWContentModeScaleToFill//拉伸模式};复制代码
///获取带圆角的图片/* radius:返回图片的圆角半径 圆角半径不可超过图片尺寸的1/2,否则按1/2处理  width:返回图片的宽度 返回的图片为一个宽高相等的矩形区域,但图片且居中显示  mode:返回图片的填充模式 适应模式:以原图片比例,能显示全部图片的最大尺寸进行填充 填充模式:以原图片比例,图片能充满容器的最小尺寸进行填充 拉伸模式:以拉伸图片能够使图片充满容器的尺寸进行填充 */-(UIImage *)dw_CornerRadius:(CGFloat)radius withWidth:(CGFloat)width contentMode:(DWContentMode)mode{    CGFloat originScale = self.size.width / self.size.height;    CGFloat height = width / originScale;    CGFloat scale = [UIScreen mainScreen].scale;    CGFloat maxV = MAX(width, height);    if (radius < 0) {        radius = 0;    }    UIImage * image = nil;    CGRect imageFrame;    if (mode == DWContentModeScaleAspectFit) {//根据图片填充模式制定绘制frame        if (originScale > 1) {//适应模式            imageFrame = CGRectMake(0, (width - height) / 2, width,height);        }        else        {            imageFrame = CGRectMake((height - width) / 2, 0, width, height);        }    }    else if (mode == DWContentModeScaleAspectFill)//填充模式    {        CGFloat newHeight;        CGFloat newWidth;        if (originScale > 1) {            newHeight = width;            newWidth = newHeight * originScale;            imageFrame = CGRectMake( -(newWidth - newHeight) / 2, 0, newWidth, newHeight);        }        else        {            newWidth = height;            newHeight = newWidth / originScale;            imageFrame = CGRectMake(0, - (newHeight - newWidth) / 2, newWidth, newHeight);        }    }    else//拉伸模式    {        imageFrame = CGRectMake(0, 0, maxV, maxV);    }    UIGraphicsBeginImageContextWithOptions(CGSizeMake(maxV, maxV), NO, scale);//以最大长度开启图片上下文    CGContextRef context = UIGraphicsGetCurrentContext();    [[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, maxV, maxV) cornerRadius:radius] addClip];//绘制一个圆形的贝塞尔曲线,并做遮罩    [self drawInRect:imageFrame];//在指定的frame中绘制图片    CGContextRotateCTM(context, M_PI_2);    image = UIGraphicsGetImageFromCurrentImageContext();//从当前上下文中获取图片    UIGraphicsEndImageContext();//关闭上下文    return image;}复制代码

转载地址:http://odywl.baihongyu.com/

你可能感兴趣的文章
c# 的四舍五入
查看>>
Java程序员从笨鸟到菜鸟之(七十二)细谈Spring(四)利用注解实现spring基本配置详解...
查看>>
Iperf带宽大小和TCP窗口测试
查看>>
linux命令总结-ls
查看>>
2013 SharePoint复习 -- CA之Application Management
查看>>
Nginx perl fcgi 配置
查看>>
我的友情链接
查看>>
java多态深入理解(二)
查看>>
利用node.js和mongodb为你的app写一个web服务
查看>>
Rails 3 Authlogic: Could not find generator ses...
查看>>
iOS静态库的那些坑
查看>>
IOS-APP提交上架流程(新手必看!2016年3月1日最新版)
查看>>
oracle rman 2
查看>>
hyper-v下NIC实验出现的问题
查看>>
shell 显示文件的行数
查看>>
Linux:常规目录操作
查看>>
2016年2月书单
查看>>
redis存储 100 条最新的记录
查看>>
There is no reason to wait
查看>>
tomcat 配置单向加密连接器-01
查看>>