有时候在设计程序的时候,会涉及到主题模式的设计,根据不同的主体颜色,所对应的各个界面不同的按钮(导航栏、状态栏等),都需要对应的去改变颜色。

首先:用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给按钮图片根据不同的主题更改颜色相关推荐

  1. iOS UIButton按钮图片在上文字在下

    // 创建自定义按钮 UIButton *btn_click = [UIButton buttonWithType:UIButtonTypeCustom]; // 创建普通状态按钮图片 [btn_cl ...

  2. ios 按钮图片充满按钮_iOS有一些非常危险的按钮-UX评论

    ios 按钮图片充满按钮 I recently bought a cool thing off Amazon. It's an adapter for iPhone, making it easy t ...

  3. iOS开发夜间模式的设置(主题切换)

    iOS开发夜间模式的设置(主题切换) 很长一段时间没有写博客了.想到自己最近刚好做了不少重构,刚好可以总结一下. 夜间模式,很多阅读类的或资讯类的App都会这个功能.以前自己也做过,现在把它抽出来封装 ...

  4. php图片涂鸦,IOS_详解iOS App中图片的线段涂鸦功能的添加方法,接下来我们要讲图片的涂鸦, - phpStudy...

    详解iOS App中图片的线段涂鸦功能的添加方法 接下来我们要讲图片的涂鸦,我们分开一点一点拓展,先给图片上划线 创建项目 起名testAddLine 接下来我们在默认生成的ViewControlle ...

  5. 设置tabbaritem的title的颜色及按钮图片

    设置title颜色: [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : kUIC ...

  6. iOS UIButton(按钮)

    UIButton属性 1.UIButton状态: UIControlStateNormal // 正常状态 UIControlStateHighlighted // 高亮状态 UIControlSta ...

  7. FileUpload控件实现单按钮图片自动上传并带预览显示

    FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调用_ ...

  8. Form表单提交按钮图片IE6下背景透明(js提交)

    Form表单提交按钮图片IE6下背景透明(js提交) 我们知道 光png图片在IE6下面透明方法很多,网上也很多,但是我今天遇到了个难题:form表单提交按钮png图片要求背景透明.我弄了半天,转个思 ...

  9. Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题

    1.问题 1.toolbar里面显示返回按钮图片太大 2.返回按钮图片没有水平居中 2.解决办法 1.把drawable里面的图片移动到mipmap-xhdpi里面去,还大了就移动到mipmap-xx ...

最新文章

  1. Ubuntu使用wget下载zabbix的扩展源
  2. svd奇异值分解_矩阵相乘和奇异值分解(SVD)
  3. 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )
  4. BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略
  5. mysql group by having count_mysql中count(), group by, order by使用详解
  6. 个人作业——week3
  7. 单变量离散傅里叶变换DFT原理及实现
  8. Python 爬虫进阶三之 Scrapy 框架安装配置
  9. 网线重新插拔后恢复正常_14日科技精选:路由器经常掉线,必须重新插拔网线才能上网。什么原因?...
  10. 【100题】第十九题(斐波那楔数列)
  11. 别人连不上_手机能连上wifi,笔记本电脑确连不上,显示无internet,安全,该怎么办?...
  12. 大数据分析师岗位是青春饭
  13. 项目助理是打杂的吗_应届生如何着手准备应聘产品助理?
  14. mfc treectrl设置背景透明_微信透明头像怎么弄 专用透明头像图片更换设置教程闽南网...
  15. Unity shader 角色消失 溶解 隐身 效果
  16. 科班出身程序员和培训出来的程序员区别在哪?
  17. 实在憋不住了,出来透透气。
  18. 在线教育20年:在线教育的未来发展趋势
  19. 单片机如何烧录程序?单片机的下载方式讲解
  20. 零和博弈中范式概率的计算

热门文章

  1. 用python 判断一个单链表是否有环
  2. 钉钉、飞书、企业微信,还没学会赚钱
  3. typora字体设置颜色的解决方案
  4. 文件监控脚本 -- Linux bash
  5. 一个女孩写给一个男孩子的信
  6. 小程序如何跳转至同服务器app,微信小程序如何跳转到APP?
  7. 从0到1构建计算机(3/12)--组合逻辑芯片:逻辑门、加法器、ALU
  8. deepin 安装到移动硬盘_系统装机|硬盘里的Linux之deepin 20系统安装教程
  9. 投资理财-曾经一起投资理财的朋友们
  10. 操作系统镜像下载【windows+linux+mac】