ios给按钮图片根据不同的主题更改颜色
有时候在设计程序的时候,会涉及到主题模式的设计,根据不同的主体颜色,所对应的各个界面不同的按钮(导航栏、状态栏等),都需要对应的去改变颜色。
首先:用ps将按钮上图片的背景颜色改成白色的,如果图片本身有颜色,将无法通过代码的方式对其着色(很重要)。
核心代码:
+(UIImage *)colorizeImage:(UIImage *)baseImage withColor:(UIColor *)theColor {UIGraphicsBeginImageContext(baseImage.size);CGContextRef ctx = UIGraphicsGetCurrentContext();CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height);CGContextScaleCTM(ctx, 1, -1);CGContextTranslateCTM(ctx, 0, -area.size.height);CGContextSaveGState(ctx);CGContextClipToMask(ctx, area, baseImage.CGImage);[theColor set];CGContextFillRect(ctx, area);CGContextRestoreGState(ctx);CGContextSetBlendMode(ctx, kCGBlendModeMultiply);CGContextDrawImage(ctx, area, baseImage.CGImage);UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return newImage;
}
只需要把对应的图片和所需要的颜色传进来,就可以得到想要颜色的图片了,但这里还有一个问题,你可能为按钮图片准备好了@3x的图片,但是还过于模糊,这时,需要修改一些这个方法:
UIGraphicsBeginImageContext(CGSizeMake(baseImage.size.width * baseImage.scale, baseImage.size.height * baseImage.scale));CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect area = CGRectMake(0, 0, baseImage.size.width* baseImage.scale, baseImage.size.height* baseImage.scale);
在相同的地方进行替换,对图片的大小乘以baseImage.scale,就可以自动识别你传入图片是@2x还是@3x了,这样得到的图片就是清楚的图片了
ios给按钮图片根据不同的主题更改颜色相关推荐
- iOS UIButton按钮图片在上文字在下
// 创建自定义按钮 UIButton *btn_click = [UIButton buttonWithType:UIButtonTypeCustom]; // 创建普通状态按钮图片 [btn_cl ...
- ios 按钮图片充满按钮_iOS有一些非常危险的按钮-UX评论
ios 按钮图片充满按钮 I recently bought a cool thing off Amazon. It's an adapter for iPhone, making it easy t ...
- iOS开发夜间模式的设置(主题切换)
iOS开发夜间模式的设置(主题切换) 很长一段时间没有写博客了.想到自己最近刚好做了不少重构,刚好可以总结一下. 夜间模式,很多阅读类的或资讯类的App都会这个功能.以前自己也做过,现在把它抽出来封装 ...
- php图片涂鸦,IOS_详解iOS App中图片的线段涂鸦功能的添加方法,接下来我们要讲图片的涂鸦, - phpStudy...
详解iOS App中图片的线段涂鸦功能的添加方法 接下来我们要讲图片的涂鸦,我们分开一点一点拓展,先给图片上划线 创建项目 起名testAddLine 接下来我们在默认生成的ViewControlle ...
- 设置tabbaritem的title的颜色及按钮图片
设置title颜色: [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : kUIC ...
- iOS UIButton(按钮)
UIButton属性 1.UIButton状态: UIControlStateNormal // 正常状态 UIControlStateHighlighted // 高亮状态 UIControlSta ...
- FileUpload控件实现单按钮图片自动上传并带预览显示
FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调用_ ...
- Form表单提交按钮图片IE6下背景透明(js提交)
Form表单提交按钮图片IE6下背景透明(js提交) 我们知道 光png图片在IE6下面透明方法很多,网上也很多,但是我今天遇到了个难题:form表单提交按钮png图片要求背景透明.我弄了半天,转个思 ...
- Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题
1.问题 1.toolbar里面显示返回按钮图片太大 2.返回按钮图片没有水平居中 2.解决办法 1.把drawable里面的图片移动到mipmap-xhdpi里面去,还大了就移动到mipmap-xx ...
最新文章
- Ubuntu使用wget下载zabbix的扩展源
- svd奇异值分解_矩阵相乘和奇异值分解(SVD)
- 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )
- BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略
- mysql group by having count_mysql中count(), group by, order by使用详解
- 个人作业——week3
- 单变量离散傅里叶变换DFT原理及实现
- Python 爬虫进阶三之 Scrapy 框架安装配置
- 网线重新插拔后恢复正常_14日科技精选:路由器经常掉线,必须重新插拔网线才能上网。什么原因?...
- 【100题】第十九题(斐波那楔数列)
- 别人连不上_手机能连上wifi,笔记本电脑确连不上,显示无internet,安全,该怎么办?...
- 大数据分析师岗位是青春饭
- 项目助理是打杂的吗_应届生如何着手准备应聘产品助理?
- mfc treectrl设置背景透明_微信透明头像怎么弄 专用透明头像图片更换设置教程闽南网...
- Unity shader 角色消失 溶解 隐身 效果
- 科班出身程序员和培训出来的程序员区别在哪?
- 实在憋不住了,出来透透气。
- 在线教育20年:在线教育的未来发展趋势
- 单片机如何烧录程序?单片机的下载方式讲解
- 零和博弈中范式概率的计算