一個輕量級的iOS皮膚切換方案(內附Demo)

項目代碼放這裏,這個方案是從實際項目中剝離而來的,你們使用中遇到什麼問題或者有什麼賜教歡迎隨時留言~git

Demo運行效果圖

Demo作的有點醜,你們多忍耐一下😅github

使用方法很是簡單:

初始化:

[[SDThemeManager sharedInstance] setupThemeNameArray:@[@"SDTheme-White", @"SDTheme-Black"]];
複製代碼

SDTheme-WhiteSDTheme-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.plistImages.xcassetsblog

  • 圖片:就放在相應的主題bundle中的Images.xcassets管理,圖片在不一樣主題下名字要保證一致。
  • 顏色字符串:顏色字符串能夠參考一下Demo中的文件,首先要有一個大分類,例如Demo中的block、text、line(跟隨本身須要分類就好,這裏的分類我是扒競品富途牛牛的🤠),若是你有一個分類叫SomeThing,那分類下內容命名要帶上相應的前綴SomeThing_,否則會報找不到,color string是HEX 或者AHEX格式。

Bundle 建立注意事項:

資源bundle不要直接新建文件夾以後改擴展名或者用Settings Bundle 圖片

推薦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

好,到如今Bundle就完成了

最後:

倉庫地址:SDTheme,⭐⭐⭐若是以爲本倉庫對您有幫助,請不要吝嗇你的⭐,感謝你的支持!⭐⭐⭐ 使用中若是有任何疑問歡迎隨時留言,還請各位看官多多指教~

相關文章
相關標籤/搜索