app 主題切換庫(swift)

ThemeStyleTools

GitHub地址

這是一個更換主題的庫,只支持更換一個主體顏色,依賴於RXSwift。由於更換主題的需求可能都是五花八門的,每個產品的想法也都有可能不同,有的需要更換tabbar的圖片,或者導航欄的圖片等等,想要做到完全的定製幾乎是不可能的,只能根據項目具體的需求來定製。我同時也寫了一份動態更換tabbar圖標的demo,完全是模擬從服務器下載主題到本地,並進行更換。

效果圖

(logo)

要求

  • iOS 8.0+
  • swift 3.0+

使用方式

pod 'ThemeStyleTools'

簡介

1.在AppDelegate裏面配置默認的主題色

ThemeStyleTools.enable(defaultTheme: "#2F4F4F")

2.在切換主題色的地方更新主題

ThemeStyleTools.updateTheme(themeStr: colorStr!)

3.使用

//修改UIView的背景顏色 
ThemeStyleTools.cl_setupViewBackgroundColor(view: bgView)
//修改UILabel的文字顏色 
ThemeStyleTools.cl_setupViewLabelTextColor(label: label)
//UIButton文字顏色normal
ThemeStyleTools.cl_setupBtnNormalTextColor(btn: btn)
//UIButton文字顏色selected
ThemeStyleTools.cl_setupBtnSelectedTextColor(btn: btn)
//UIButton圖片顏色normal 
ThemeStyleTools.cl_setupBtnNormalImgColor(btn: btn)
//UIButton圖片顏色select
ThemeStyleTools.cl_setupBtnSelectImgColor(btn: btn)
//修改UIImageView的圖片顏色 
ThemeStyleTools.cl_setupImageViewColor(img: bgView)

//修改UISlider的顏色 
ThemeStyleTools.cl_setupSliderColor(slider: slider)
//修改UIPageControl的顏色 
ThemeStyleTools.cl_setupPageControlColor(page: page)
//修改UIProgressView的顏色 
ThemeStyleTools.cl_setupProgressViewlColor(progress: progress)
//修改UISwitch的顏色 
ThemeStyleTools.cl_setupSwitchViewlColor(switchView: switchView)
 //修改UITextField的文字顏色 
ThemeStyleTools.cl_setupTextFieldTextColor(textField: textField) 
//修改UISegmentedControl的顏色 
ThemeStyleTools.cl_setupSegmentControllColor(segment: segment) 
//修改UITextView的文字顏色 
ThemeStyleTools.cl_setupTextViewColor(textView: self.textView)

4.在這個庫中我將監聽主題更換的類開放了出來,假如當app處於默認主題時我想讓一個按鈕的圖片處於黑色狀態,其他主題處於白色狀態,可使用下面的方式

// 監聽主題的更換,設置自己想要的顏色 
ListeningThemeAdjuster.listeningTheme.asObservable().subscribe(onNext: { (colorStr:String) in
        if colorStr != "#2F4F4F" {
            self.leftBtn.tintColor = UIColor.white
            let img = self.leftBtn.image(for: .normal)?.withRenderingMode(.alwaysTemplate)
            self.leftBtn.setImage(img, for: .normal)
        } else {
            self.leftBtn.tintColor = UIColor.black
            let img = self.leftBtn.image(for: .normal)?.withRenderingMode(.alwaysTemplate)
            self.leftBtn.setImage(img, for: .normal)
        }
    }).addDisposableTo(disposeBag)

5.該庫依賴於rxswift ,截止目前RxSwift暫未更新到swift4.0,如果發現你的項目引入rxswift後報錯,注意檢查rxswift的編譯版本
buildsettings(搜索swift language version) 將編譯版本改爲swift3.2,當然,如果以後支持了swift4.0,就可以忽略這一步了

(logo)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章