iOS开发图片纯色填充(两种方式)和缩小图片
UIImage图标换色和变换大小
这里的图片大都指只有两个色的图标,有时候我们的图标需要根据不同的状态显示不同的颜色,有一种简单的处理方式是,将不同状态的颜色图标都切出来,变换状态的时候直接使用相应的颜色图标,这样会导致资源图标增多,安装包变大。还有就是使用比较流行的iconFont模式。最后也可以让我们编码人员直接改变图标的颜色。
方法一、使用tint颜色改变(最简单的)
要求:你的明白tint的概念和使用
a.如果你是将图标导如到Assets.xcassets文件夹,可以选择将你要改变颜色的图标的render as 属性设为 模板图片(原本图标你应该保留一份),操作如图
之后在代码逻辑中使用该模板图片,【重点】设置tintColor即可,记得设置哟,不然就是系统的蓝色拉。
b.如果你是直接将图片导入到项目,就需要用代码,代码如下:
var image1 = UIImage(named:"test") //原图var templateImage = image1?.withRenderingMode(.alwaysTemplate) //模型图(可以改变颜色了)//然后根据情况将需要的图片加到视图中。//【注意】需要设置视图的tintColor值,否则就会用系统的或者父视图的tint色
//如:self.imageView.image = templateImage ; self.imageView.tintColor = .red
建议使用b.可以保留者原图。
方法二、通过代码再画布上下文中设置。
a.Swift参考代码
/**//对图片着色//参数:blendMode,参考下面链接*/func changeColor(_ color:UIColor, blendMode:CGBlendMode) -> UIImage {//方式一(可以)UIGraphicsBeginImageContextWithOptions(self.size, false, UIScreen.main.scale)let context = UIGraphicsGetCurrentContext()color.setFill()//移动图片context!.translateBy(x: 0, y: self.size.height)context!.scaleBy(x: 1.0, y: -1.0)let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)context!.draw(self.cgImage!, in: rect)//模式配置context!.setBlendMode(blendMode)context!.addRect(rect)context!.drawPath(using: CGPathDrawingMode.fill)//创建获取图片let coloredImage = UIGraphicsGetImageFromCurrentImageContext()UIGraphicsEndImageContext()return coloredImage!
}
BlendMode参数值解释 (不一定适用于OC)
b. OC参考代码片段:
//纯色化图片- (UIImage *)setImage:(UIImage *)image toColor:(UIColor *)color{UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);CGContextRef context = UIGraphicsGetCurrentContext();CGContextTranslateCTM(context, 0, image.size.height);/没有这部分图片会跳动CGContextScaleCTM(context, 1.0, -1.0);CGContextSetBlendMode(context, kCGBlendModeNormal);CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);/CGContextClipToMask(context, rect, image.CGImage);[color setFill];CGContextFillRect(context, rect);UIImage *colorImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return colorImage;
}
将图片缩小化
swift版本
/***改变图片大小(缩小)*/func changeSize(_ size:CGSize) -> UIImage {UIGraphicsBeginImageContext(size)self.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))let newImage = UIGraphicsGetImageFromCurrentImageContext()UIGraphicsEndImageContext()return newImage!}
OC版本
//缩小图片
- (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size{UIGraphicsBeginImageContext(size);[image drawInRect:CGRectMake(0, 0, size.width, size.height)];UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();_testImage = newImage;return newImage;
}
iOS开发图片纯色填充(两种方式)和缩小图片相关推荐
- Android点击图片随机,android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...
- android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的idivBg = ...
- Python:实现图片裁剪的两种方式——Pillow和OpenCV
原文:https://blog.csdn.net/hfutdog/article/details/82351549 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还 ...
- Python图片裁剪的两种方式——Pillow和OpenCV
本文参考Python图片裁剪的两种方式--Pillow和OpenCV并进行了一些更新 感谢作者:hfutdog 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一 ...
- python opencv 裁剪图片_Python图片裁剪的两种方式——Pillow和OpenCV
在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. OpenCV ...
- Python实现图片裁剪的两种方式——Pillow和OpenCV
在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. 首先,我们有 ...
- android 图片方法,分享实现Android图片选择的两种方式
Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTU ...
- python-网络图片下载(两种方式)
利用python进行网络图片下载(两种方式) 1:方式一 1:代码 # coding=utf-8 """ @author: jiajiknag 程序功能: 图片批量下载_ ...
- iOS的音讯通知有两种方式,Badge Notification和Alert Notification
当应用程序不处于前台运转中时,音讯通知能将某些信息及时告知用户.比方收到新音讯.收到新邮 件.程序下载已完成或者待办事项行将开端等.目前各挪动平台上抵消息通知的设计均有所差异,各有利害.这里整理了iO ...
最新文章
- python3中tkinter button属性_Python3 tkinter基础 Button bg 按钮的背景颜色
- Python使用matplotlib可视化多个时间序列数据、添加双Y轴、以显示具有不同尺度的时间序列数据(secondary y axis)
- numpy生成随机数
- GridView列值绑定
- python列表片段_Python列表片段索引操作,python
- Qt for Android 开发环境配置
- python引用自己的文件的一切问题
- 百度网盘不限速下载神器献给你
- linux gcc编译只能编译一条,请教一个gcc编译器的问题啊
- 戴志坚接替李小加出任职港交所行政总裁 基本年薪700万港元
- 运营级如意影视源码+完整类库/无限增删解析API
- 智慧城市是如何用大数据建成的?
- Mahony 互补滤波
- ARFoundation系列讲解 - 66 AR虚拟试戴
- Java private方法访问
- 问题 F: 求一个3*3矩阵对角线元素之和
- 沈华伟老师图卷积神经网络教学视频笔记
- 英语发音规则---I字母常见发音组合有哪些
- Cesium入门(五):加载WMTS瓦片地图服务
- struct和typedef struct的区别