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