[iOS微博项目 - 1.1] - 设置导航栏主题(统一样式)


- 在创建item的时候逐个设置:代码超级冗余
- 抽取创建公共父类:稍好的选择,但是继承了此公共父类的控制器,就不能操作其去继承系统自带的控制器类了,造成很大的隐患。iOS中控制器不建议提取公共父类,最好直接继承系统自带控制器。
- 使用主题appearance统一设置所有UIBarButtonItem的样式:采用!在自定义的UINavigationController的类初始化方法中实现一次,就可以改变所有使用了此类的BarButtonItem样式
/** 类初始化的时候调用 */
+ (void)initialize {
// 初始化导航栏样式
[self initNavigationBarTheme]; // 初始化导航栏item样式
[self initBarButtonItemTheme];
} /** 统一设置导航栏item的样式
* 因为是通过主题appearence统一修改所有NavivationBar的样式,可以使用类方法
*/
+ (void) initBarButtonItemTheme {
// 设置导航栏,修改所有UINavigationBar的样式
UIBarButtonItem *appearance = [UIBarButtonItem appearance]; // 设置noraml状态下的样式
NSMutableDictionary *normalTextAttr = [NSMutableDictionary dictionary];
// 字体大小
normalTextAttr[NSFontAttributeName] = [UIFont systemFontOfSize:];
// 字体颜色
normalTextAttr[NSForegroundColorAttributeName] = [UIColor orangeColor];
// 设置为normal样式
[appearance setTitleTextAttributes:normalTextAttr forState:UIControlStateNormal]; // 设置highlighted状态下的样式
NSMutableDictionary *highlightedTextAttr = [NSMutableDictionary dictionaryWithDictionary:normalTextAttr];
// 字体颜色
highlightedTextAttr[NSForegroundColorAttributeName] = [UIColor redColor];
// 设置为normal样式
[appearance setTitleTextAttributes:highlightedTextAttr forState:UIControlStateHighlighted]; // 设置disabled状态下的样式
NSMutableDictionary *disabledTextAttr = [NSMutableDictionary dictionaryWithDictionary:normalTextAttr];
// 字体颜色
disabledTextAttr[NSForegroundColorAttributeName] = [UIColor lightGrayColor];
// 设置为normal样式
[appearance setTitleTextAttributes:disabledTextAttr forState:UIControlStateDisabled]; }
- 统一显示文字颜色:黑色
- 文字阴影:禁止
- 字体大小:20

/** 统一设置导航栏样式 */
+ (void) initNavigationBarTheme {
// 使用appearence(主题)设置,统一修改所有导航栏样式
UINavigationBar *appearance = [UINavigationBar appearance]; // 为了统一iOS6和iOS7,iOS6需要设置导航栏背景来模拟iOS7的效果
if (!iOS7) {
[appearance setBackgroundImage:[UIImage imageWithNamed:@"navigationbar_background"] forBarMetrics:UIBarMetricsDefault];
} // 设置属性
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
// 设置字体
attr[NSForegroundColorAttributeName] = [UIColor blackColor];
attr[NSFontAttributeName] = [UIFont systemFontOfSize:];
// 消去文字阴影,设置阴影偏移为0
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowOffset = CGSizeZero;
attr[NSShadowAttributeName] = shadow; [appearance setTitleTextAttributes:attr];
}
[iOS微博项目 - 1.1] - 设置导航栏主题(统一样式)的更多相关文章
- IOS开发中设置导航栏主题
/** * 系统在第一次使用这个类的时候调用(1个类只会调用一次) */ + (void)initialize { // 设置导航栏主题 UINavigationBar *navBar = [UINa ...
- [iOS微博项目 - 4.3] - 设置每条微博边框样式
github: https://github.com/hellovoidworld/HVWWeibo A.设置每条微博边框样式 1.需求 不需要分割线 每个微博之间留有一定的间隙 2.思路 直接设 ...
- [iOS微博项目 - 4.2] - 设置转发微博背景
github: https://github.com/hellovoidworld/HVWWeibo A.转发微博部分的淡灰色背景 1.需求 转发微博部分需要设置背景色 使用图片作为背景 2.思路 ...
- 美团HD(1)-设置导航栏主题
自定义一个UINavigationController DJNavigationController.h #import <UIKit/UIKit.h> @interface DJNavi ...
- iOS导航栏主题
主要是取得导航栏的appearance对象,操作它就设置导航栏的主题 UINavigationBar *navBar = [UINavigationBar appearance]; 常用主题设置 导航 ...
- iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)
一.UI_APPEARANCE_SELECTOR 彩票项目中appearance的用法一直没有搞明白,这次通过第二个项目中老师的讲解,更深一层次的了解到了很多关于appearance的作用以及使用方法 ...
- 【转】iOS中设置导航栏标题的字体颜色和大小
原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...
- iOS中设置导航栏标题的字体颜色和大小
iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的 ...
- IOS 设置导航栏
//设置导航栏的标题 self.navigationItem setTitle:@"我的标题"; //设置导航条标题属性:字体大小/字体颜色…… /*设置头的属性:setTitle ...
随机推荐
- poj 1195 Mobile phones(二维树状数组)
树状数组支持两种操作: Add(x, d)操作: 让a[x]增加d. Query(L,R): 计算 a[L]+a[L+1]……a[R]. 当要频繁的对数组元素进行修改,同时又要频繁的查询数组内任一 ...
- UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
题意: 给一幅图,要从s点要到e点,图中有两种无向边分别在两个集合中,第一个集合是可以无限次使用的,第二个集合中的边只能挑1条.问如何使距离最短?输出路径,用了第二个集合中的哪条边,最短距离. 思路: ...
- atoi&itoa
char* itoa(int num,char*str,int radix) {/*索引表*/ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVW ...
- IOS的XML文件解析,利用了NSData和NSFileHandle
如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...
- Squid 反向代理加速网站
本实例的域名是 wenjin.cache.ibm.com.cn,通过DNS的轮询 技术,将客户端的请求分发给其中一台 Squid 反向代理服务器处理,如果这台 Squid 缓存了用户的请求资源,则将请 ...
- win7/8下VirtualBox虚拟共享文件夹设置
1. 安装增强功能包(VBoxGuestAdditions) 打开虚拟机,运行ubuntu,在菜单栏选择"设备->安装增强功能",根据提示即可安装成功(成功后也可 以实现 ...
- 【转】 IOS中定时器NSTimer的开启与关闭
原文网址:http://blog.csdn.net/enuola/article/details/8099461 调用一次计时器方法: myTimer = [NSTimer scheduledTime ...
- 【转】【玩转cocos2d-x之二十三】多线程和同步03-图片异步加载
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/15334159 cocos2d-x中和Android,Windows都 一样, ...
- delphi 如何关闭 Unsafe typecast of 和 Unsafe type 的waring
有时在Delphi使用指针类型的数据,总是提示如下: [Warning] FGroupFeedBack.pas(796): Unsafe typecast of 'Pointer' to 'TObje ...
- jsoup使用选择器语法来查找元素
问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...