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

首先:用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. Linux下的网络管理工具—OpenNMS
  2. Hibernate初探
  3. sort函数的应用习题(二)
  4. codeforces contest 1142
  5. maven仓库用法与settings.xml配置汇总
  6. 模拟滤波器的单位冲激响应+单位阶跃响应+斜坡响应+抛物线响应matlab实现(转载+整理)
  7. 我被跨系统的换行符折磨疯了~~~
  8. Login as Root in Ubuntu 12.10
  9. 2021秋季跳槽必备:软件测试面试题(附带答案)备战金九银十!
  10. python是什么 自学-为什么自学python总是坚持不下去,这篇文章给你解答!
  11. 从山顶透过云层看城市
  12. 【BZOJ 1050】1050: [HAOI2006]旅行comf (动态SPFA)
  13. 计算机应用基础实践试题,计算机应用基础实践环节考试试题(一)
  14. android--关于apk加密那点事的思考
  15. 易到要在网约车市场突围并不容易
  16. 图书馆抢座系统(python) 附源码
  17. 细思恐极的星座分析(上) ——用大数据和机器学习揭开十二星座的真实面目!
  18. spss python_ARIMA模型 - [SPSS Python]
  19. 没有计算机网络地址怎么办,教大家电脑没有ip地址mac地址怎么办
  20. Echarts显示数据被遮挡了

热门文章

  1. 三d眩晕可以学计算机,如何才能避免3D晕眩?3种方法教你解决!
  2. ConcurrentLinkedQueue 源码解析(JDK8)
  3. 计算机光线太强哪里调整,电脑光线太强怎么调暗
  4. 骨传导耳机有哪些品牌、最好的骨传导蓝牙耳机品牌介绍
  5. 递归查询三种实现方式
  6. 上传Android应用到腾讯应用宝,乐固加固应用使用
  7. unity屏幕渐变黑白效果
  8. 从0到1构建计算机(3/12)--组合逻辑芯片:逻辑门、加法器、ALU
  9. Nova8pro自动调节亮度忽亮忽暗问题
  10. 继昨天的猜拳游戏,升级为老虎机版