iOS 使用 XIb 搭建界面 现要适配夜间模式

2016-10-25 15:17:41 +08:00
 qq432591

请教下老司机, 现有项目 纯 XIB 搭建界面,现想做夜间模式适配,基本上就是 界面换色有什么比较好的思路么? 想来将 XIB 中的 view 都拖出来 设置颜色感觉好烦躁,

2816 次点击
所在节点    iOS
4 条回复
zjupigeon
2016-10-25 15:20:19 +08:00
现在还是用 xib 做界面 ui 的多么?好像 ios 主推 sb
Amztion
2016-10-25 16:15:06 +08:00
用 UIAppearance 可以实现的吧
mingming
2016-10-25 16:34:21 +08:00
我自己的项目里面用的一套方案供参考:
使用 runtime 扩展 view 两个属性:白天颜色,黑夜颜色。
使用 swizzledMethod 把对应的 stter 方法替换成自己的:比如 setBackgroundColor
将 storyboard (xib) 界面的默认颜色作为白天的颜色。使用 @IBInspectable 修饰你的黑夜颜色属性。这样在 storybard 也可以配置。
当视图被读取的时候会经过你 setter 方法,将第一次读取的颜色设置为白天颜色。
然后在设置一下当前主题。显示不同的颜色。

缺点是 像 UILabel 等 textColor 需要单独的方法,不会走 setter 方法。优点也很明显,可以直接在 storybard 里面直接配置两种配色。不需要写配置文件。
mingming
2016-10-25 16:40:39 +08:00
你也可以参考一些开源的实现,比如: https://github.com/Draveness/DKNightVersion 这个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/315328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX