ios 主题切换 思路_iOS 使用 NSObject 的分类实现快速切换主题

PYTheme

An easy way to change theme through NSObject's category for iOS.

通过 NSObject 的分类实现使用简单的主题更换。

Features

轻量级

低耦合

自动管理内存

支持动态更换主题颜色

支持动态更换主题图片

支持 CocoaPods

Requirements

iOS 7.0 or later

Xcode 7.0 or later

Architecture

NSObject+PYThemeExtension

Renderings

PYThemeDemo.gif

Usage

使用 CocoaPods:

pod "PYTheme"

导入主头文件#import

手动导入:

将PYTheme文件夹中的所有文件拽入项目中

导入主头文件#import "NSObject+PYThemeExtension.h"

具体使用

设置主题色

1. 添加控件的属性 /方法到主题色池中

直接通过属性

// 按钮的背景色添加到主题色池中

[button py_addToThemeColorPool:@"backgroundColor"];

通过设置方法并且传入方法对应参数数组,参数中直接含有颜色参数

// 设置按钮选中时字体颜色添加到主题色池中

[button py_addToThemeColorPoolWithSelector:@selector(setTitleColor:forState:) objects:@[PYTHEME_THEME_COLOR, @(UIControlStateSelected)]];

当方法参数中没有直接包含颜色参数,而是经过包装(如使用 NSDictionary 包装)

// 设置 tabBar 选中时字体颜色添加到主题色池中

NSMutableDictionary *attrSel = [NSMutableDictionary dictionary];

attrSel[NSForegroundColorAttributeName] = PYTHEME_THEME_COLOR;

[childController.tabBarItem py_addToThemeColorPoolWithSelector:@selector(setTitleTextAttributes:forState:) objects:@[attrSel, @(UIControlStateSelected)]];

2. 设置主题色

// 设置主题色为红色

[self py_setThemeColor:[UIColor redColor]];

设置主题图片与配色

1. 添加相关控件对象到主题图片池中

// 添加 tabBarItem 到主题图片池中

[tabBarItem py_addToThemeImagePool];

2. 根据需求设置控件的相关属性

// 重新加载主题图片,并设置主题色为红色

[self py_reloadThemeImageWithThemeColor:[UIColor redColor] setting:^(const NSArray *objects) {

// 根据控件类型完成相关设置

}

使用注意

对象不能是UIAppearance,否则将无法添加到主题池中

如下:将导致 navigationBar 无法添加到主题色池中

// 获取全局 navBar

UINavigationBar *navBar = [UINavigationBar appearance];

// 添加背景色到主题色池中

[navBar py_addToThemeColorPool:@"barTintColor"];

使用py_addToThemeColorPoolWithSelector:objects:设置参数数组时注意:

方法参数必须按顺序一一对应,如果涉及到的主题色设置使用 PYTHEME_THEME_COLOR 宏定义代替

如果数组中某个参数为 nil ,需包装为 [NSNull null] 对象再添加到数组中

如果要使图片随着主题色变化而渲染成主题颜色,需要设置RenderingMode为: UIImageRenderingModeAlwaysTemplate

期待

如果您在使用过程中有任何问题,欢迎issue me! 很乐意为您解答任何相关问题!

与其给我点 star ,不如向我狠狠地抛来一个 BUG !

如果想要参与这个项目的维护或者有好的功能,欢迎 pull request !

如果您想要更多的接口来自定义或者建议 /意见,欢迎issue me!我会根据大家的需求提供更多的接口!

如果您在使用中觉得略有不适,欢迎联系我 QQ:499491531 ,希望一起完善此项目,让它变成更强大,能够满足大多数用户的需求!

Licenses

All source code is licensed under the MIT License.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 嵌套函数_MySQL 聚合函数嵌套使用

MySQL 中聚合函数不可用直接嵌套使用,比如: MAX(AVG(sal))、MAX(COUNT(*))...解决思路:可以使用嵌套子查询,先分组取出被嵌套的聚合函数结果,再使用外聚合函数嵌套。(应该有更合适方式,待补充)示例&#xf…

mysql权限分立_MySQL设置3权分立

网站后台中权限模块非常普遍,所以掌握3权分立十分必要3权分立表有 用户表,角色表,权限表,对应关系如下用户有着“读者”,“作者”和“管理员”角色,角色有不同权限,如发布文章,审核…

python跑一亿次循环_python爬虫爬取微博评论

原标题:python爬虫爬取微博评论python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手。python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无论是python新入手的小白&#xff0…

Nature:原来记忆是这样形成的!科学家发现记忆形成新机制

来源:神经科技概要:神经元之间通过突触传递信息,大约50年前科学家们发现了突触的可塑性,科学界也一直认为突触是记忆和学习过程中的一个重要的功能组成部分。来自法国的研究人员最近发现了突触储存信息和控制信息储存过程的一个新…

腾讯 AI Lab副主任俞栋:过去两年基于深度学习的声学模型进展

来源:腾讯AI Lab概要:过去几年里,自动语音识别(ASR)已经取得了重大的进步 。这些进步让 ASR 系统越过了许多真实场景应用所需的门槛,催生出了 Google Now、微软小娜和亚马逊 Alexa 等服务。1. 引言过去几年…

王劲首度解析景驰:我们是跑得最快的无人驾驶公司

来源:AI世代概要:9月14日,在景驰科技天使轮投资方之一华创资本组织的分享会上,王劲以景驰科技创始人兼首席执行官的身份,发表了主题为“无人驾驶的大国冲刺”的演讲。创业近半年后,王劲带着景驰最新的发展成…

mysql 5.7安装完密码是多少_关于mysql5.7.18的安装并修改初始密码的图文教程

这篇文章主要为大家详细介绍了Mysql5.7安装并修改初始密码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下Centos 安装MySQL可以参考之前写的一篇文章Centos7.3 安装Mysql5.7并修改初始密码windows安装mysql5.7有两种方式1、下载.msi安装文件直…

化解谷歌AI霸权的另一种思路?开发平台的生态围剿

来源: 脑极体概要:无论是学界还是巨头,都只能给出规则和参考,以及一小部分示例性应用,而最终让人工智能落地产生价值的,只能是成千上万脑中闪过鬼点子的开发者。相较移动互联网,AI将是一个更激进…

波士顿咨询联手MIT发布万字人工智能报告,详解企业如何跨越“AI应用鸿沟”

来源:机器人圈概要:AI可以帮助人们预测就业市场接下来的变动,发现(并满足)新的培训劳动力的需求,以此缓冲它自身及其他因素造成的影响。人们对人工智能(AI)抱有极高的期待&#xff0…

工信部:2017工业物联网白皮书

来源:199IT互联网数据中心概要:目前,物联网进入与传统产业深度融合发展的崭新阶段,工业制造领域的转型升级成为工业物联网发展的重要驱动力,世界各国纷纷发布相关的战略举措,抢占新一轮发展战略机遇。目前&…

从共享单车看城市云反射弧的工作运行机制

作者;刘锋,黄子铜概要:智能时代,我们的城市从架构上也越来越类脑化,从运转上变得越来越智慧,共享单车基于物联网技术,很便捷地解决了最后一公里的需求,是城市云脑中云反射弧在交通领…

AI 热潮之下,初创企业能否躲过科技巨头的碾压?

来源:AIis概要:人工智能(AI)是当下的流行语,AI 相关的初创企业纷纷涌现,大型科技巨头也频频采取相关动作,走在 AI 的前沿。全世界的科技巨头们要小心了。人工智能(AI)是当…

mysql先删后增并发时出现死锁_MySQL死锁案例分析一(先delete,再insert,导致死锁)...

一、死锁案例MySQL版本:Percona MySQL Server 5.7.19隔离级别:可重复读(RR)业务逻辑:并发下按某个索引字段先delete记录,再insert记录比如:begin;delete from tb where order_id xxx;insert into tb(order_id) values…

神经科学领域重大突破,港大科学家揭海马体新功能

来源:神经科技概要:香港大学研究团队在神经科学领域取得重大突破,揭示大脑中一个重要区域 — 海马体的新功能。香港大学研究团队在神经科学领域取得重大突破,揭示大脑中一个重要区域 — 海马体的新功能。团队发现,海马…

年度最理性 AI 分析文章:预测 AI 未来,大部分人陷入了 7 大误区

来源:36氪概要:错误的预测会导致大家对不会发生的事情感到恐惧。为什么在人工智能和机器人的预测上总有人不断犯错呢?想着预测未来,却一不小心就陷入了yy。近年来图像识别突破、Waymo无人车上路、Alphago战胜人类冠军等AI的一些标…

为什么当今的企业都需要人工智能战略?

来源:腾股创投概要:人工智能(AI)从根本上改变了所有行业的企业的运营(包括制造业,医疗健康,信息技术和运输业)。今后5年,会有一些标普500强CEO 后悔没有早点考虑自己的 A…

昆虫大脑帮助AI解决导航难题

原作者:SAKYASINGHADASGUPTA, LEAPMIND INC译者:彭婷概要:无人机和其他自主机器人需要通过移动或其他有效的方案来解决现实生活中的问题,而这些问题有的小到平常的包裹运输,有的大到紧急搜索和救援任务。无人机和其他自…

DeepMind发布《星际争霸 II》深度学习环境

来源:AI 研习社概要:上个月,DeepMind和暴雪终于开源了《星际争霸II 》的机器学习平台。本文介绍了基于星际争霸II游戏的强化学习环境SC2LE(《星际争霸II 》学习环境)。StarCraft II: A New Challenge for Reinforcemen…

中国首篇Science机器人子刊!北航软体机器人实验室四年成果登上封面长篇

来源:北航新闻网、机器人大讲堂概要:通过这三项关键技术,我们成功实现了机器人样机能够像真正的䲟鱼一样牢牢吸附在物体表面,并且通过内部鳍片的主动抬起运动显著增大摩擦力。重磅惊喜,北京时间9月21日,国际…

java 控制台输入字符串_Java控制台输入字符串及字符串比较

需求描述:茵茵很喜欢研究车牌号码,从车牌号码上可以看出号码注册的早晚,据研究发现,车牌号码是按字典序发放的,现在她收集了很多车牌号码,请你设计程序帮她判断注册较早的号码。车牌号码由5个字母或数字组成…