項目代碼放這裏,這個方案是從實際項目中剝離而來的,你們使用中遇到什麼問題或者有什麼賜教歡迎隨時留言~git
Demo作的有點醜,你們多忍耐一下😅github
[[SDThemeManager sharedInstance] setupThemeNameArray:@[@"SDTheme-White", @"SDTheme-Black"]];
複製代碼
SDTheme-White
和SDTheme-Black
是資源主題Bundle的名稱,下面會說到資源Bundle的引入方法。bash
[[SDThemeManager sharedInstance] changeTheme:@"SDTheme-Black"];
複製代碼
具體調用很是簡單,好比須要換膚的視圖控件本來是調用backgroundColor
設置顏色,只須要換成調用擴展方法theme_backgroundColor
便可,例如:ui
self.view.theme_backgroundColor = @"block_bg";
self.textField.theme_textColor = @"text_h1";
self.image.theme_image = @"icon_face";
複製代碼
富文本須要用SDThemeForegroundColorAttributeName
替換NSForegroundColorAttributeName
,例如:spa
navBar.theme_titleTextAttributes = @{SDThemeForegroundColorAttributeName:@"text_h1"};
複製代碼
另外有些經常使用的屬性在XIB等可視化視圖也能夠直接設置,例如: code
若是直接設置屬性的方式不知足需求,還能夠本身監聽通知SDThemeChangedNotification
,收到通知以後自行作顏色圖標等切換。cdn
顏色字符串和圖片是放在單獨的Bundle裏面進行管理的,因此剛開始要新建本身的主題Bundle. Bundle中 新建ColorsMap.plist
和Images.xcassets
blog
block、text、line
(跟隨本身須要分類就好,這裏的分類我是扒競品富途牛牛
的🤠),若是你有一個分類叫SomeThing
,那分類下內容命名要帶上相應的前綴SomeThing_
,否則會報找不到,color string
是HEX 或者AHEX格式。資源bundle不要直接新建文件夾以後改擴展名或者用Settings Bundle 圖片
file
->
New
->
Target
->
macOS
->
Bundle
建立完成以後,對 Base SDK 設置爲 iOS Build Active Architecture Only 設置爲 "YES" Installation Directory 刪除掉後面的路徑 Code Signing Identity 選擇 Don't Code Sign iOS Deployment Target 設置爲 合適的版本 Skip Install 設置爲 "NO" Strip Debug Symbols During Copy 設置爲 "YES" COMBINE_HIDPI_IMAGES 設置爲 "NO" 再設置一下依賴 ip
倉庫地址:SDTheme,⭐⭐⭐若是以爲本倉庫對您有幫助,請不要吝嗇你的⭐,感謝你的支持!⭐⭐⭐ 使用中若是有任何疑問歡迎隨時留言,還請各位看官多多指教~