type
status
date
slug
summary
tags
category
icon
password
notion image
 
下面是本文要实现的效果
notion image
因此方案并不完全成熟,本文只讲思路不提供demo
类似效果在安卓里有多种实现方案 第一种是拿系统色盲模式(iOS 拿不到) 第二种就是遍历 view 了,此文方案是这种思路
一、一个全局控制的单例 单利需要的内容有:是否置灰的状态、开启灰色配置的方法、 多个weakMemory 的NSHashTable保存要处理的 view 们
交换方法代码
二、交换方法,只展示一个例子(要处理的有 View的 backgroundColor、layer 的 backgroundColor 和 shadowColor、label 的 textColor、tabBar 的 tintColor 等)
三、Color 的 grayColor 算法(CGColor 类似)
四、到此,我们已经完成了大部分工作,剩下的也是最难啃的骨头--UIImage
4.1、要处理 UIImage,首先需要了解位图的格式,在此不做阐述,推荐地址:
4.2、在了解了位图之后,我们可以处理位图
4.3、图片灰度处理后会发现png的透明底会变成黑色,如图
notion image
时间原因,在此只提供 oc 处理方法,把黑底转为透明:
五、总结 本文主要是运用了 runtime 去 hook 各种要处理的视图的相关方法,例如 init,例如 backgroundColor,去进行灰度处理操作,还要对 bitmap 位图有一定的了解去处理图片(大多数是图片置灰)
ZHCodable Swift字典转模型库Swift内存泄漏详解([weak self]使用场景)