博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift 主题库
阅读量:5735 次
发布时间:2019-06-18

本文共 2293 字,大约阅读时间需要 7 分钟。

ThemeStyleTools

这是一个更换主题的库,只支持更换一个主体颜色,依赖于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文字颜色normalThemeStyleTools.cl_setupBtnNormalTextColor(btn: btn)//UIButton文字颜色selectedThemeStyleTools.cl_setupBtnSelectedTextColor(btn: btn)//UIButton图片颜色normal ThemeStyleTools.cl_setupBtnNormalImgColor(btn: btn)//UIButton图片颜色selectThemeStyleTools.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)

转载地址:http://rrgwx.baihongyu.com/

你可能感兴趣的文章
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
6天面试、斩获6家硅谷巨头Offer,我是如何做到的?
查看>>
Scala模式匹配的亮点——Martin Odersky访谈(四)
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
AWS推出深度学习容器,简化AI程序开发
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
GIT
查看>>
微软宣布公开预览其内容分发网络
查看>>
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>