前言
對于日間夜間模式切換 , 多種色調(diào)主題切換 , 這類的需求可以說在閱讀社交類APP中屢見不鮮了 , 但如何能更方便的實現(xiàn)這一需求呢? 不要說給每個自定義的view神馬的加個通知 然后在通知事件里設(shè)置各種屬性的顏色圖片等等 , NO , 那不是一個好的Coder該做的事 , 我們應(yīng)該追求用最簡單的方式去完成最繁瑣的事 , 正是出于這些原因 , 我開發(fā)了這個主題管理庫 今天開源出來分享給大家 ----- LEETheme
LEETheme
什么是LEETheme ? 它是一個輕量級主題管理開源庫 , 完美的適配系統(tǒng)版本差異 , 擁有良好的兼容性 , 任何對象都可以支持 , 優(yōu)雅的使用方式 , 相比傳統(tǒng)多主題處理方式而言 , LEETheme 只需一句代碼 即可完成對象多樣式的操作.
效果演示

使用方法
LEETheme 提供了兩種設(shè)置方式 這里做一下簡單的演示:
獨(dú)立設(shè)置方式
獨(dú)立設(shè)置方式是對某一對象屬性進(jìn)行單獨(dú)的配置 , 例如下面的例子 , 對view對象添加背景顏色 其中傳入了2個參數(shù) (@"主題標(biāo)簽" , [該主題標(biāo)簽對應(yīng)的color值])
self.view.lee_theme.LeeAddBackgroundColor(DAY , [UIColor whiteColor]).LeeAddBackgroundColor(NIGHT , [UIColor blackColor]);
增加換行后 格式更加清晰
self.view.lee_theme
.LeeAddBackgroundColor(DAY , [UIColor whiteColor])
.LeeAddBackgroundColor(NIGHT , [UIColor blackColor]);
標(biāo)識符設(shè)置方式
標(biāo)識符設(shè)置方式是通過添加不同主題的JSON配置信息再為某對象設(shè)置指定標(biāo)識符來實現(xiàn)切換的 , 下面模擬個例子:
json的標(biāo)準(zhǔn)格式:
{
"color": {
"identifier1(唯一標(biāo)識符)": "十六進(jìn)制顏色值",
"identifier2": "#000000"
},
"image": {
"identifier3(唯一標(biāo)識符)": "圖片名稱",
"identifier4": "lee.png"
}
}
我有這樣的兩個json:
{
"color": {
"backgroundcolor": "#F0F0F0",
"textcolor": "#000000"
},
"image": {
"ident1": "lee.jpg",
"ident2": "lee帥.png"
}
}
第二個json:
{
"color": {
"backgroundcolor": "#000000",
"textcolor": "#808080"
},
"image": {
"ident1": "我愛LEE.jpg",
"ident2": "LEE愛我.jpg"
}
}
下面我們分別調(diào)用添加json的方法來講這2個json添加給LEETheme:
//添加json設(shè)置數(shù)據(jù) , 設(shè)置主題標(biāo)簽 , 設(shè)置資源路徑(如果資源路徑為nil 默認(rèn)會在mainBundle中查詢所需資源)
[LEETheme addThemeConfigWithJson:第一個json Tag:@"day" ResourcesPath:nil];
[LEETheme addThemeConfigWithJson:第二個json Tag:@"night" ResourcesPath:nil];
通過上面的代碼可以很清楚的看出 , 我添加了一個json , 并設(shè)置主題標(biāo)簽為@"day" 那么也就是說第一個json 它對應(yīng)的就是@"day"標(biāo)簽主題的配置信息 , 多主題情況依次類推.
添加好JSON的配置信息后 , 接下來我們只要為需要根據(jù)主題變化的對象設(shè)置標(biāo)識符就可以了:
//設(shè)置背景顏色的標(biāo)識符 , 這個標(biāo)識符和你的json文件中配置的標(biāo)識符對應(yīng)
self.view.lee_theme.LeeConfigBackgroundColor(@"backgroundcolor");
這樣只要為這些對象設(shè)置好對應(yīng)的屬性的標(biāo)識符 , 那么當(dāng)主題變換的時候 它就會自動根據(jù)相應(yīng)主題JSON中的標(biāo)識符的值進(jìn)行設(shè)置.
切換主題
切換主題非常簡單 只需要調(diào)用下面的方法 傳入你要啟用的主題的標(biāo)簽就可以了.
//啟用主題
[LEETheme startTheme:@"day"];
這里建議使用時在didFinishLaunchingWithOptions代理方法中設(shè)置一下默認(rèn)主題 , 這樣在APP第一次開啟時啟用默認(rèn)主題.
//設(shè)置默認(rèn)主題
[LEETheme defaultTheme:@"day"];
當(dāng)然如果你重新打開APP , 那么LEETheme會自動啟用上一次使用的主題.
總結(jié)
LEETheme是一個非常實用的主題管理庫 , 總共只有2個文件 , 它所提供的兩種不同設(shè)置方式可以滿足絕大部分Coder的需求 , 可以很方便的實現(xiàn)多主題切換操作 , 當(dāng)然不僅可以實現(xiàn)本地固定的主題樣式切換 , 利用標(biāo)識符設(shè)置方式也可以實現(xiàn)網(wǎng)絡(luò)主題切換的功能 , 具體詳細(xì)的使用示例我會在demo中逐一體現(xiàn) , 除了強(qiáng)大功能外 所采用的鏈?zhǔn)秸Z法還讓你的代碼更加優(yōu)雅 , 好了 , 今天就介紹到這里 , 更多詳細(xì)的使用示例請灰到Github上查看.
我是LEE , 一枚有信仰的果粉Coder , 如果喜歡記得關(guān)注哦 親 ~ 么了個噠 ?