V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qq432591
V2EX  ›  iOS

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

  •  
  •   qq432591 · 2016-10-25 15:17:41 +08:00 · 2651 次点击
    这是一个创建于 2739 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    缺点是 像 UILabel 等 textColor 需要单独的方法,不会走 setter 方法。优点也很明显,可以直接在 storybard 里面直接配置两种配色。不需要写配置文件。
    mingming
        4
    mingming  
       2016-10-25 16:40:39 +08:00
    你也可以参考一些开源的实现,比如: https://github.com/Draveness/DKNightVersion 这个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4493 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:09 · PVG 18:09 · LAX 03:09 · JFK 06:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.