给你的iOS应用更换主题
应用主题的更换往往会给我们的应用添彩,今天总结一下iOS主题切换的方法
1.首先把各个主题图片导入到工程目录中
选择Create folder references
2.Thememanager.h中声明单例方法和传入图片或者颜色的名字对应找到图片和颜色
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface Thememanager : NSObject@property(nonatomic, copy) NSString *currentTheme;@property(nonatomic, retain, readonly) NSDictionary *themeDic;@property(nonatomic, retain, readonly) NSDictionary *themeColorDic;+(instancetype)defaultManager;//凭借图片路径并且放回图片对象
-(UIImage *)imageFromName:(NSString *)imgName;//传入颜色对应的pilst文件中名字 获取uicolor颜色
-(UIColor *)colorFromName:(NSString *)colorName;@end
3.创建主题管理类来管理主题的切换,Thememanager.m中要创建单例方法
//获取单例对象
+(instancetype)defaultManager
{static Thememanager *themeManager = nil;static dispatch_once_t predicate;dispatch_once(&predicate, ^{themeManager = [[Thememanager alloc] init];});return themeManager;
}
4.复写init初始化方法获取plist文件中数据对应切换主题
//复写init初始化方法
-(instancetype)init
{self = [super init];if (self) {//1.获取文件路径NSString *path = [[NSBundle mainBundle] pathForResource:@"theme" ofType:@"plist"];//2.解析plist数据NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];//设置主题数据_themeDic = dic;//设置初始的主题_currentTheme = @"猫爷";}return self;
}
5.实现根据名字找到图片的方法(地址拼接)
//凭借图片路径并且放回图片对象
-(UIImage *)imageFromName:(NSString *)imgName
{//获取当前工作目录NSString *bundlePath = [[NSBundle mainBundle] bundlePath];NSString *imgpath = [self.themeDic objectForKey:self.currentTheme];NSString *path = [NSString stringWithFormat:@"%@/%@/%@",bundlePath,imgpath,imgName];
// NSLog(@"path is:%@",path);return [[UIImage alloc] initWithContentsOfFile:path];}
6.复写currenttheme的set方法,当主题切换时发送通知
//复写currenttheme的set方法
-(void)setCurrentTheme:(NSString *)currentTheme
{_currentTheme = currentTheme;//主题切换时获取新的 颜色的config。plist文件数据//获取到当前主题对应的路径NSString *themePath = [self.themeDic objectForKey:_currentTheme];//凭借configpist文件路径NSString *configPath = [NSString stringWithFormat:@"%@/%@/config.plist",[[NSBundle mainBundle] bundlePath],themePath];//根据路径解析plist文件数据_themeColorDic = [NSDictionary dictionaryWithContentsOfFile:configPath];//当主题切换时发起通知[[NSNotificationCenter defaultCenter] postNotificationName:kThemeChanageNotification object:nil];
}
7.在切换主题的类中通过单例拿到图片切换主题
-(instancetype)initWithImage:(UIImage *)image
{self = [super initWithImage:image];if (self) {[[NSNotificationCenter defaultCenter] addObserverForName:kThemeChanageNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {//重新设置图片
// self.image = [[Thememanager defaultManager] imageFromName:self.imgName];self.image = kThemeImageFromName(self.imgName);}];}return self;
}
转自我的博客http://rockeen.cn/
给你的iOS应用更换主题相关推荐
- 主题图标_iPhone一键更换主题、图标神器
iOS图标虽然是经典,但是看久了也是会腻的.今天教大家一个简单的方法,来更换iPhone的图标. 更换主题.图标教程 前往App Store搜索[moloko]进行下载安装,这是一款可以替iPhone ...
- 使用 css/less 动态更换主题色(换肤功能)
前言 说起换肤功能,前端应该是非常熟悉了? 一般来说换肤的需求分为几种: 1. 纯前端,直接在页面前端通过点击自由切换限定的几种主题色,切换之后主题色变量存到本地浏览器 2. 在后台配置好色值,传到前 ...
- Extjs 更换主题(转载)
转自http://www.wenhaozhong.com/27.html 这里基于 Extjs4.2(发文时官方刚发布了最新版5.0) 进行开发的,更换主题后,主题信息保存在本地 cookie 中,如 ...
- linux mint 图标主题_如何在 Linux Mint 中更换主题
一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...
- linux mint 主题切换,详解如何在 Linux Mint 中更换主题
一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. 自从 Mint 的开发团队开始更为严肃的对待设计, &q ...
- android最简单的更换主题,教你更换Android手机主题
买了Android手机的朋友肯定都希望手机桌面拥有一个好看的手机主题,但是具体操作却不会,下面就给大家简单教程. 目前在android系统上常见的主题软件有:open home.ADW launche ...
- element-plus 更换主题色
element-plus 更换主题色 场景: 简单的定制主题色,并不需要有按钮切换主题色. 实现: 在项目中新建你的theme.scss,代码如下: // style/element/index.sc ...
- 给hexo搭建的博客更换主题
怎么给hexo搭建的博客更换主题 首先要进入hexo的官网主题界面,找到你所想要的主题 网址:https://hexo.io/themes/ 点进该主题,就会进入你选中的主题的拥有者的博客,你就可以看 ...
- hexo+gitHub 个人博客搭建及更换主题历程(特适合入门小白)
内容涵盖 hexo+gitHub 个人博客搭建 搭建过程中遇到的问题及解决方案 更换主题 1. gitHub 创建博客仓库 (1) 注册Github(如果已注册可以忽略次此步骤) 详细注册步骤请参考: ...
最新文章
- keil编译出错关于__use_no_semihosting_swi的使用
- vue中在data中写入img地址 引入问题
- 语言压缩zip win_主流压缩软件挨个尝试后,我选择了没有短板的全能压缩Bandizip...
- 心中无敌,则天下无敌
- 【LeetCode 剑指offer刷题】动态规划与贪婪法题7:47:礼物的最大价值
- c#明华rf读卡器_C#调用第三方API接口-案例明华读卡器
- linux播放csf文件
- 美女程序员,看到最后一个就亮了
- AD637_高精度,宽带RMS-DC转换器
- 理解Memory Barrier(内存屏障)
- 直通车推广技巧、店铺人群标签怎么做?猜你喜欢入池检测
- GraphPad Prism 中文版 科研绘图工具
- 5.15 按照排序图标对目标拓展客户数进行排序 [原创Excel教程]
- 记录下我磕磕碰碰的三个月找工作经历,完整PDF
- C#winform连接数据库实现登陆注册(数据库的安装与配置)
- 从零开始制作一个基于SOPC方法的DDS正弦信号发生器
- python一些常用函数
- SLAM导航机器人零基础实战系列:(四)差分底盘设计——5.底盘PID控制参数整定
- Java程序突然死掉的原因
- 数学分形之复牛顿迭代法