重复造车没有必要了,这里推荐一个GitHub上面很是不错的案例
https://github.com/SlashDevelopers/SDTheme //星数70左右
里面还是有些坑可能会遇见,这里写出来避免大家花费不必要的时间
1、创建需要的bundle文件。这里bundle文件需要用到当前项目中和以后利用下载到app沙盒中放到NSDocumentDirectory根目录下或者指定的放置主题目录下。这里有需要注意的地方
a、创建bundle。选中项目TAGRETS下的目录
image.png
b、因为ios中没有Bundle这个选项,需要到macOS这里选择。但还需要设置一些ios这里才可以用
image.png
image.png
c、项目中需要用到创建的theme则需要引用进来
image.png
image.png
2、添加到这里项目已经可以使用了。但是在theme的文件夹下面只有创建的时候的Info.plist文件,这里需要去添加其他文件以供使用
a、添加plist文件存放主题需要用到的颜色。选择创建的theme文件夹---》鼠标右键,选中New File--》ios类目下的Property List文件
image.png
b、再创建放置图片的文件Images.xcassets。选择创建的theme文件夹---》鼠标右键,选中New File--》ios类目下的Asset Catalog
image.png
最后创建好的文件如下
image.png
3、整合主题
a、如果是已经开发好的项目,则需要创建一个默认的主题,原先的存放Assets.xcassets资源的有些文件需要放到这个默认的主题上了,哪些需要替换的就放到默认的主题就行。具体文件怎么写我这里有个Demo大家可以下载了去看看,在这里就不细说了。
接下来需要用到遇见节日更换主题,这里使用下载到沙盒文件中,需要用到了加载这个文件就行。文件的生成如下
image.png
选择Products下面的需要下载用到的主题,右键Show in Finder拿到需要用到的文件放到下载路径就行
image.png
image.png
显示了包内容如下,不用管文件中Assets.car文件,直接把theme.bundle文件直接放到项目中测试就行了
image.png
4、项目测试遇见的问题,我这里项目使用的是自定义的TabBarButton继承的是UIControl。在使用theme_image或者其他的时候,出现了底部栏有重影查看了因为是分类针对的是UITabBarItem而我用的是自定义的,目前还没有解决这个问题,还请大家注意点。
这里把项目放到了GitHub大家可以下载看下
https://github.com/CoderLJW/JJY_SDTheme
网友评论