[BS-03] 统一设置UITabBarController管理的所有VC的tabBarItem图标文字的颜色大小等属性
1.
统一设置UITabBarController管理的所有VC的tabBarItem图标文字的颜色大小等属性
. 统一设置UITabBarController管理的所有VC的tabBarItem图标文字的颜色大小等属性 //设置字体大小及颜色(可变字典才可用[]方法设值)
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
attr[NSFontAttributeName] = [UIFont systemFontOfSize:];
attr[NSForegroundColorAttributeName] = [UIColor grayColor]; NSMutableDictionary *selectAttr = [NSMutableDictionary dictionary];
selectAttr[NSFontAttributeName] = [UIFont systemFontOfSize:];//NSFontAttributeName是个const变量,一旦设置了19,后面就不能再改了,这里改为5无效
selectAttr[NSForegroundColorAttributeName] = [UIColor darkGrayColor];//不能写成NSBackgroundColorAttributeName UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:attr forState:UIControlStateNormal];
[item setTitleTextAttributes:selectAttr forState:UIControlStateSelected]; . 就不用像下面这样单独给每一个VC.tabBarItem设置字体大小和颜色了
[vc01.tabBarItem setTitleTextAttributes:attr forState:UIControlStateNormal];
[vc01.tabBarItem setTitleTextAttributes:selectAttr forState:UIControlStateSelected]; [vc02.tabBarItem setTitleTextAttributes:attr forState:UIControlStateNormal];
[vc02.tabBarItem setTitleTextAttributes:selectAttr forState:UIControlStatelectSelected]; [vc03.tabBarItem setTitleTextAttributes:attr forState:UIControlStateNormal];
[vc03.tabBarItem setTitleTextAttributes:selectAttr forState:UIControlStateSelected];
2.
原理是:setTitleTextAttributes:forState: 函数后面有备注UI_APPEARANCE_SELECTOR,
可以通过 [Class appearance] setTitleTextAttributes: forState: ]; 来同一设置字体颜色。
//设置UITabBarItem:UIBarItem的颜色属性 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIBarItem : NSObject <NSCoding, UIAppearance> - (void)setTitleTextAttributes:(nullable NSDictionary<NSString *,id> *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR; - (nullable NSDictionary<NSString *,id> *)titleTextAttributesForState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR
3.
封装了如下方法,后续要同一设置根控制器UITabBarController管理的各个VC的tabBarItem的字体和颜色,可直接在UITabBarController的viewDidLoad方法中调用[self setTabBarItemFontAndColor];
//统一设置所有vc的TabBarItem的字体和颜色
- (void)setTabBarItemFontAndColor { //设置字体大小及颜色(可变字典才可用此方法)
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
attr[NSFontAttributeName] = [UIFont systemFontOfSize:];
attr[NSForegroundColorAttributeName] = [UIColor grayColor];//NSBackgroundColorAttributeName字体的背景颜色,一般不需要 NSMutableDictionary *selectAttr = [NSMutableDictionary dictionary];
selectAttr[NSFontAttributeName] = [UIFont systemFontOfSize:];//NSFontAttributeName是个const变量,一旦设置了19,后面就不能再改了,这里改为5无效
selectAttr[NSForegroundColorAttributeName] = [UIColor darkGrayColor];//这里不能写成NSBackgroundColorAttributeName UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:attr forState:UIControlStateNormal];
[item setTitleTextAttributes:selectAttr forState:UIControlStateSelected];//注意此处为UIControlStateSelected,不能写成Highlighted了 //原理是:setTitleTextAttributes:forState: 函数后面有备注UI_APPEARANCE_SELECTOR,可以通过 [Class appearance] setTitleTextAttributes: forState: ]; 来同一设置字体颜色。
}
[BS-03] 统一设置UITabBarController管理的所有VC的tabBarItem图标文字的颜色大小等属性的更多相关文章
- UITabBar-UITabBarItem图片的背景颜色属性和文字的颜色大小设置
UITabBarItem设置的图片选中状态下默认的是蓝色,如何改变它的颜色为图片自带的颜色呢? typedef NS_ENUM(NSInteger, UIImageRenderingMode) { / ...
- [BS-10] 统一设置app所有页面的“返回”按钮样式
统一设置app所有页面的“返回”按钮样式 如果想统一设置app所有页面的“返回”按钮样式,首先自定义WZNavigationController类继承UINavigationController类,然 ...
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...
- iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...
- [转]Vs解决方案的目录结构设置和管理
原文地址:[转]Vs解决方案的目录结构设置和管理 作者:大明 以下内容为“原创”+“转载” 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对 ...
- Vs 2008 解决方案的目录结构设置和管理(转)
http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...
- VC 2005 解决方案的目录结构设置和管理
VC 2005 解决方案的目录结构设置和管理 Roger (roger2yi@gmail.com) 一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...
- Spring Cloud中Feign如何统一设置验证token
代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过 ...
- VS解决方案的目录结构设置和管理
一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库. 所以为解决 ...
随机推荐
- WPF DataGrid的分页实现
原理:其实分页功能的实现大家都清楚,无非就是把一个记录集通过运算来刷选里面对应页码的记录. 接来下我们再次添加新的代码 <Grid> <DataGrid Name="da ...
- Go学习记录
操作系统:Windows 一.下载 go官网:https://golang.org/go下载地址:https://golang.org/dl/ 二.安装 安装包有msi安装版本,以及zip压缩包版本. ...
- 项目部署到Tomat报错:jar not loaded.See Servlet Spec 2.3, section 9.7.2. Offending
项目部署到Tomcat报这样的异常: Java代码 jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: ja ...
- PHP 支持中文目录和文件的的遍历:文件编码转换
在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换: <?php header("Content-type:text/h ...
- js获取各种宽高方法
屏幕的有效宽高: window.screen.availHeightwindow.screen.availWidth 网页可见区域宽:document.body.clientWidth 网页可见区域高 ...
- java语言中数值自动转换的优先顺序
转换原则:从低精度向高精度转换byte .short.int.long.float.double.char数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用 ...
- 6严格的HTML:遵循标准,合乎规范
标准的网页加载速度更快,并且在其他一些冲浪设备(如电话和电视)上运行地更好.如果没有告诉浏览器使用的HTML版本,许多浏览器将使用"转换显示"模式,而这可能会导致在不同浏览器有不一 ...
- wajueji
#include<stdio.h>int map[3]={42,3,99};int step[3]={0};int max=99999;void qian(){ int i=0; int ...
- json数据交换
1.1 为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 1.2 s ...
- epoll 简单介绍及例子
第一部分:Epoll简介 . 当select()返回时,timeout参数的状态在不同的系统中是未定义的,因此每次调用select()之前必须重新初始化timeout和文件描述符set.实际上,秒,然 ...