LEETheme優(yōu)雅的主題管理庫

前言

對于日間夜間模式切換 , 多種色調(diào)主題切換 , 這類的需求可以說在閱讀社交類APP中屢見不鮮了 , 但如何能更方便的實現(xiàn)這一需求呢? 不要說給每個自定義的view神馬的加個通知 然后在通知事件里設(shè)置各種屬性的顏色圖片等等 , NO , 那不是一個好的Coder該做的事 , 我們應(yīng)該追求用最簡單的方式去完成最繁瑣的事 , 正是出于這些原因 , 我開發(fā)了這個主題管理庫 今天開源出來分享給大家 ----- LEETheme

LEETheme

什么是LEETheme ? 它是一個輕量級主題管理開源庫 , 完美的適配系統(tǒng)版本差異 , 擁有良好的兼容性 , 任何對象都可以支持 , 優(yōu)雅的使用方式 , 相比傳統(tǒng)多主題處理方式而言 , LEETheme 只需一句代碼 即可完成對象多樣式的操作.


效果演示

朋友圈Demo演示

使用方法

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)注哦 親 ~ 么了個噠 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,530評論 6 13
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,670評論 4 61
  • 你有沒有過這種情況: 打開今天決定要看的書,看了兩頁,拍張照片,發(fā)了個朋友圈打卡,然后等待著點(diǎn)贊評論,再抽個時間回...
    ElliotJu閱讀 404評論 1 10
  • 把絕望沉溺河流 將自己打扮成一種希望 你棲于梧桐 卻沒有那烈火應(yīng)燃盡的姿態(tài) 你穿上你鮮艷的衣 掩藏起你身上的刺 你...
    久夜閱讀 311評論 0 0

友情鏈接更多精彩內(nèi)容