Skip to content

Commit 4b9d9b8

Browse files
committed
Update README.md
1 parent 4f46807 commit 4b9d9b8

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

README.md

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88

99
[前言](#前言) - [示例](#示例) - [安装](#安装) - [文档](#文档) - [贡献](#贡献)
1010

11-
![](https://github.com/jiecao-fm/SwiftThemeResources/blob/master/Screenshots/switch.git)
11+
![](https://github.com/jiecao-fm/SwiftThemeResources/blob/master/Screenshots/switch.gif)
1212

1313
## 前言
1414
### 缘起
1515
项目需求,我们要为“节操精选”开发夜间模式功能。我们的需求不是简单的调整亮度或者`alpha`,而是更换为一套更深色的UI。因此所谓夜间模式其实就是特定的更换主题(换肤)功能。
1616

17-
如何实现呢?判断某个全局变量,然后在初始化视图控件时设置不同的背景色或者加载不同的切图文件?但是在切换主题时,已经初始化好的视图控件呢?没错,也许你也想到了通过通知让相应的视图控件修改背景色或切图。想到这里你应该也意识到了`Controller`中将充斥着注册通知`if...else`、更新视图控件的代码,糟糕的是如果忘记了注销通知还可能引起应用崩溃。
17+
如何实现呢?判断某个全局变量,然后在初始化视图控件时设置不同的背景色或者加载不同的切图文件?但是在切换主题时,已经初始化好的视图控件呢?没错,也许你也想到了通过通知让相应的视图控件修改背景色或切图。想到这里你应该也意识到了Controller中将充斥着注册通知`if...else`、更新视图控件的代码,糟糕的是如果忘记了注销通知还可能引起应用崩溃。
1818

1919
一番思考后,我们对该任务提出了更高的要求,打造一套简单、可复用的主题框架,正如你看到的这样。
2020

@@ -26,20 +26,20 @@
2626

2727
### 索引方式
2828

29-
`UIView`随主题变换背景色?
29+
`UIView` 随主题变换背景色?
3030

3131
```swift
3232
view.theme_backgroundColor = ThemeColorPicker(colors: "#FFF", "#000")
3333
```
3434

35-
`UILabel``UIButton`随主题变换文字颜色?
35+
`UILabel``UIButton` 随主题变换文字颜色?
3636

3737
```swift
3838
label.theme_textColor = ThemeColorPicker(colors: "#000", "#FFF")
3939
button.theme_setTitleColor(ThemeColorPicker(colors: "#000", "#FFF"), forState: .Normal)
4040
```
4141

42-
`UIImageView`随主题变换切图?
42+
`UIImageView` 随主题变换切图?
4343

4444
```swift
4545
imageView.theme_image = ThemeImagePicker(names: "day", "night")
@@ -56,49 +56,49 @@ ThemeManager.setTheme(isNight ? 1 : 0)
5656
5757

5858
### plist 方式
59-
为了满足通过网络下载和安装主题包的需求,我们支持以plist 配置主题。简单讲就是在plist 中记录配置参数,比如背景色、切图文件名等,在代码中通过key 来指定相应的参数。因此,该plist 文件以及用到的资源文件就组成了一个主题包。
59+
为了满足通过网络下载和安装主题包的需求,我们支持以`plist`配置主题。简单讲就是在`plist` 中记录配置参数,比如背景色、切图文件名等,在代码中通过`key`来指定相应的参数。因此,`plist`文件以及用到的资源文件就组成了一个主题包。
6060

6161
以下为用法示例:
6262

6363
```swift
6464
view.theme_backgroundColor = ThemeColorPicker(keyPath: "Global.backgroundColor")
6565
imageView.theme_image = ThemeImagePicker(keyPath: "SelectedThemeCell.iconImage")
6666
```
67-
> 与索引方式类似,只是具体的参数值变为了间接的key 名称,正因如此赋予了它扩展的能力。
67+
> 与索引方式类似,只是具体的参数值变为了间接的`key`名称,正因如此赋予了它扩展的能力。
6868
6969

70-
切换主题时参数为plist 名称,这里以bundle 中的plist 文件及资源文件为例,使用沙箱中的文件也是可以的。
70+
切换主题时参数为`plist`名称,这里以`bundle`中的`plist`文件及资源文件为例,使用沙箱中的文件也是可以的。
7171

7272
```swift
7373
ThemeManager.setTheme("Red", path: .MainBundle)
7474
```
7575

76-
> plist 方式增加主题无需修改代码,可以无限扩展主题,因此你完全可以通过这种方式为你的用户开发下载安装主题的功能。
76+
> `plist`方式增加主题无需修改代码,可以无限扩展主题,因此你完全可以通过这种方式为你的用户开发下载安装主题的功能。
7777
78-
上面用到的plist、image 展示如下:
78+
上面用到的`plist``image`展示如下:
7979

8080
![](https://github.com/jiecao-fm/SwiftThemeResources/blob/master/Screenshots/1.pic.jpg)
8181
![](https://github.com/jiecao-fm/SwiftThemeResources/blob/master/Screenshots/2.pic.jpg)
8282

8383
### Objective-C
84-
完全兼容Objective-C,用法示例:
84+
完全兼容`Objective-C`,用法示例:
8585

8686
```objective-c
8787
lbl.theme_backgroundColor = [ThemeColorPicker pickerWithColors:@[@"#FAF9F9", @"#E2E2E2"]];
8888
```
8989
9090
### 主要特点
91-
- [x] 纯Swift 编写
92-
- [x] 兼容Objective-C
93-
- [x] 基于runtime
91+
- [x] 纯`Swift`编写
92+
- [x] 兼容`Objective-C`
93+
- [x] 基于`runtime`
9494
- [x] 易于集成
95-
- [x] 扩展属性以 "theme_*" 开头,便于 IDE 自动补全
96-
- [x] 支持UIAppearance
95+
- [x] 扩展属性以 `theme_*` 开头,便于 IDE 自动补全
96+
- [x] 支持`UIAppearance`
9797
- [x] 自动监听主题切换,更新UI
9898
- [x] 支持通过字面量设置不同主题,通过索引进行切换
99-
- [x] 支持使用plist设置主题,可直接通过项目资源加载,或远程下载至沙盒中加载
99+
- [x] 支持使用`plist`设置主题,可直接通过项目资源加载,或远程下载至沙盒中加载
100100
- [x] 主题参数配置错误时日志提示
101-
- [x] 强类型ThemePicker
101+
- [x] 强类型`ThemePicker`
102102
- [x] 完整的Demo
103103
104104
@@ -120,10 +120,10 @@ github "jiecao-fm/SwiftTheme"
120120
```
121121

122122
#### Framework
123-
运行项目中名为SwiftTheme的Target,将生成的framework链到你自己的项目中
123+
运行项目中名为`SwiftTheme`的Target,将生成的`framework`链到你自己的项目中
124124

125125
#### 源文件(iOS7)
126-
拷贝Source文件夹下的所有文件到你的项目中
126+
拷贝`Source`文件夹下的所有文件到你的项目中
127127

128128
## 文档
129129

@@ -134,7 +134,7 @@ github "jiecao-fm/SwiftTheme"
134134

135135
#### 设置样式
136136

137-
SwiftTheme为每个UI相关的属性提供了 theme_backgroundColor 、 theme_image 这种以 theme_ 开头的属性,来实现对相应属性的监听与更新,你需要设置这些属性来设置主题,例如:
137+
`SwiftTheme`为每个UI相关的属性提供了 `theme_backgroundColor``theme_image` 这种以 `theme_` 开头的属性,来实现对相应属性的监听与更新,你需要设置这些属性来设置主题,例如:
138138
```swift
139139
140140
view.theme_backgroundColor = ThemeColorPicker(colors: "#FFF", "#000")
@@ -143,21 +143,21 @@ view.theme_image = ThemeImagePicker(names: "day", "night")
143143
view.theme_backgroundColor = ThemeColorPicker(keyPath: "SomeColorKeyPath")
144144
view.theme_image = ThemeImagePicker(keyPath: "SomeImageKeyPath")
145145
```
146-
> 不同的属性会接收不同类型的Picker,来帮助你避免传入错误的参数,并提供更简便的设置,即便你使用了错误的Picker,编译器也会提示你。
146+
> 不同的属性会接收不同类型的`Picker`,来帮助你避免传入错误的参数,并提供更简便的设置,即便你使用了错误的`Picker`,编译器也会提示你。
147147
148148
#### 切换主题
149149

150-
切换主题时,所有通过 theme_ 设置的属性都会立即更新,并带有渐变动画,切换方法:
150+
切换主题时,所有通过 `theme_` 设置的属性都会立即更新,并带有渐变动画,切换方法:
151151
```swift
152152
153153
ThemeManager.setTheme(0) // 使用第一个主题,如 "#FFF" "day"
154154
ThemeManager.setTheme(1) // 使用第二个主题,如 "#000" "night"
155155
156-
// 使用项目资源中的day.plist作为主题
156+
// 使用项目资源中的`day.plist`作为主题
157157
ThemeManager.setTheme("day", path: .MainBundle)
158-
// 使用沙盒的someURL路径中的night.plist作为主题,someURL也会作为读取资源的相对路径
158+
// 使用沙盒的`someURL`路径中的`night.plist`作为主题,`someURL`也会作为读取资源的相对路径
159159
ThemeManager.setTheme("night", path: .Sandbox(someURL))
160-
// 使用传入的字典dict作为主题,someURL也会作为读取资源的相对路径
160+
// 使用传入的字典`dict`作为主题,`someURL`也会作为读取资源的相对路径
161161
ThemeManager.setTheme(dict, path: .Sandbox(someURL))
162162
```
163163

@@ -174,7 +174,7 @@ NSNotificationCenter.defaultCenter().addObserver(self, selector: "doSomething",
174174
### *目前支持的属性*
175175
***
176176
177-
> 子类会拥有父类的属性,例如UILabel也会拥有UIView的theme_alpha等属性,这种属性不一一列出
177+
> 子类会拥有父类的属性,例如`UILabel`也会拥有`UIView`的`theme_alpha`等属性,这种属性不一一列出
178178
179179
##### UIView
180180
- var theme_alpha: ThemeCGFloatPicker?
@@ -300,7 +300,7 @@ ThemeCGColorPicker.pickerWithKeyPath("someStringKeyPath")
300300
ThemeDictionaryPicker(dicts: ["key": "value"], ["key": "value"])
301301
ThemeDictionaryPicker.pickerWithDicts([["key": "value"], ["key": "value"]])
302302
303-
// 暂时不支持从plist中读取字典
303+
// 暂时不支持从`plist`中读取字典
304304
```
305305

306306
#### ThemeStatusBarStylePicker
@@ -309,18 +309,18 @@ ThemeDictionaryPicker.pickerWithDicts([["key": "value"], ["key": "value"]])
309309
ThemeStatusBarStylePicker(styles: .Default, .LightContent)
310310
ThemeStatusBarStylePicker.pickerWithStyles([.Default, .LightContent])
311311
312-
// 在自定的Key中设置指定的Value,匹配字符串即可生效
312+
// 在自定的`Key`中设置指定的`Value`,匹配字符串即可生效
313313
// 可选的值有:"UIStatusBarStyleDefault" 和 "UIStatusBarStyleLightContent"
314314
ThemeStatusBarStylePicker(keyPath: "someStringKeyPath")
315315
ThemeStatusBarStylePicker.pickerWithKeyPath("someStringKeyPath")
316316
```
317317

318318
### *更多*
319319

320-
下载SwiftTheme项目,了解如何在项目中使用,其中包含两个Demo Target:
320+
下载`SwiftTheme`项目,了解如何在项目中使用,其中包含两个Demo Target:
321321

322322
- `Demo`演示了如何使用索引进行管理,退出时保存上次使用的主题等常见需求
323-
- `PlistDemo`演示了如何使用plist进行管理,并包含下载保存主题Zip包等功能
323+
- `PlistDemo`演示了如何使用`plist`进行管理,并包含下载保存主题Zip包等功能
324324

325325
## 贡献
326326

0 commit comments

Comments
 (0)