JXTheme:iOS9+换肤/暗黑模式最佳方案之一,轻量级、高度自定义、swift编写

本文介绍了适用于iOS9及更高版本的轻量级换肤库JXTheme,该库使用Swift编写,支持高度自定义。文章详细阐述了如何设置主题属性、配置不同风格、保存和切换主题,以及使用示例,帮助开发者实现优雅的暗黑模式适配。
摘要由CSDN通过智能技术生成

简介

2018年苹果在macOS系统引入了暗黑模式,一经推出广受好评。尤其是我们程序员,经常与代码、文本打交道,亮色风格的界面看久了,眼睛会特别累。有了暗黑模式之后,我们的眼睛终于能被温柔对待了。而且系统内置的应用适配的非常好,拿我们常用的XCode来说,也挑不出什么大毛病。反正我是用了暗黑模式之后就没有回去过了。

当然推出暗黑模式不只是为了程序员准备的,也有其他的原因:

  • 可以当做夜间模式:晚上看屏幕的时候,不会亮到你睁不开眼睛。
  • 信息重点的表达需要:在黑色系更能突出关键信息,能做到一目了然,抓住用户的焦点。
  • 用户审美的需要:有相当多的用户对黑色系的产品很钟爱,当然要迎合他们的需求了。
  • 硬件设备省电的需要:现在流行的OLED屏幕,对于纯黑色像素点是不需要通电的。

其实不管它有多少原因,苹果爸爸这么大力的推广,肯定有它的价值,我们跟着苹果爸爸走的就行。这不iOS13就引入到了iOS系统,对于我们开发者来说,就是又爱又恨啊。如果你们的产品是有格调的产品,多半暗黑模式适配的需求就在路上了,就像我一样?。但是最尴尬的地方在于,适配暗黑模式的api只在iOS13可用,你又要让我适配暗黑模式,又要让我最低支持iOS9,你这不是让我为难吗??没办法系统原生支持不了的,那就到咱们的宝藏网站Github上面找一找iOS9+的换肤方案。当然找到了许多,大部分是OC的,因为项目主要语言是Swift,所以pass掉。找到了许多swift三方库,但是里面的一些设计有点过时、有些不支持swift5、有些功能太重了。我只想要一个轻量级、高度自定义的方案即可。没有现成的满足的库,与其委曲求全,不如自己实现。所以就有了JXTheme方案,一个轻量级、api友好、高度自定义的换肤方案。

该方案主要借鉴了iOS13的暗黑模式适配API,所以建议你先去网上查阅iOS13的暗黑模式适配指南。先对系统的方案有一定了解,再来看JXTheme你会感到非常亲切。关键在于JXTheme最低支持iOS9,等于说在iOS9就能使用iOS13的暗黑模式适配方案。而且后面还给出了当你的应用最低支持iOS13时,从JXTheme切换到系统API的指南。

Github地址

大家可以先进入github地址,看一下效果。JXTheme Github地址

核心代码&关键流程介绍

下面按照换肤API的调用流程来介绍实现方案

1.如何优雅的设置主题属性

通过给控件扩展命名空间属性theme,类似于SnapKitsnpKingfisherkf,这样可以将支持主题修改的属性,集中到theme属性。这样比直接给控件扩展属性theme_backgroundColor更加优雅。
核心代码如下:

view.theme.backgroundColor = ThemeProvider({ (style) in
    if style == .dark {
        return .white
    }else {
        return .black
    }
})

2.如何根据传入的style配置对应的值

借鉴iOS13系统APIUIColor(dynamicProvider: <UITraitCollection) -> UIColor>)。自定义ThemeProvider结构体,初始化器为init(_ provider: @escaping ThemePropertyProvider<T>)。传入的参数ThemePropertyProvider是一个闭包,定义为

【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值