开源方案
RNThemeManager 提供了一种优雅的方案。这种方案将主题的配色或字体配置保存在静态 Plist 中,每次切换主题时,用单例 manager 类从 Plist 配置文件中读取样式信息。然后创建了一套可更换皮肤主题的父视图控件,控件初始化时(init)在通知中心注册为观察者,监听主题切换的通知,在接到通知时,将颜色和字体更改为指定的样式。这个更换皮肤的框架非常简洁,但在成熟项目中应用,需要把已有页面中的控件都继承自那套统一的可更换皮肤的父控件,或者把自定义的 view 注册到通知中心并自己实现变化皮肤的方法,代码改动较大,如:
1 | // 自定义的 ViewController 或 View 遵从 RNThemeUpdateProtocol 并实现 applyTheme 方法 |