主题切换

2020-08-06  本文已影响0人  叶语JM

1.什么是主题切换?

就是在一个app中实现不同的主题.在同一种主题下,所有字体颜色一样,背景图的样式一样.

2.怎么实现?

(1).多个主题包中的图片名一定要一样,因为同一个控件在不同主题下代码是一样的,只是图片不一样,那就就是设置图片的时候使用的是用同一个图片名,只是路径不一样.

(2).主题切换怎么保存每个主题包:

(2.1)数据持久化

(2.2)每个主题包要相互独立

(2.3)每个主题包应该用实体文件,因为实体文件夹才能是路径

(在工程里拉进一个文件夹时勾选以下三个选项就会变成实体文件夹)

实体文件夹与虚拟文件夹的区别:


3.实现:

(1)使用通知的广播模式向每个类发送主题切换的通知

(2)因为主题切换牵扯的控件非常多,而且每个都要注册通知,才能对主题切换的通知起作用,所以要父类,在父类中完成注册通知

4.那些类需要对主题切换起作用

(1)UITabBarController

(2)UINavigationController

(3)UIViewController

(4)UIImageView

(5)UILabel

(6)UIButton

(所以这些类都要写成父类,重写父类:让代码可扩展性更高,有利于在后期的更新和维护,耦合性更低)

5.每个主题下都有自己对应的颜色

6.在没有其他主题的情况下,需要一套默认的主题在Bunde里面

下面就以一个UIImageView类为例子吧

首先写一个UIImageView的父类,重写初始化方法,在方法里添加一个通知,当接收到通知时,图片名字改变了.

通知的发送是你按了主题按钮时就开始的(通知要记得先注册,再发送通知)

只要是调用到这个父类的,当主题按钮改变时都可以接收到通知,所以就会做出相应的改变.这样就可以实现主题切换的功能了.

上一篇下一篇

猜你喜欢

热点阅读