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的父类,重写初始化方法,在方法里添加一个通知,当接收到通知时,图片名字改变了.
通知的发送是你按了主题按钮时就开始的(通知要记得先注册,再发送通知)
只要是调用到这个父类的,当主题按钮改变时都可以接收到通知,所以就会做出相应的改变.这样就可以实现主题切换的功能了.
网友评论