A.导航栏两侧文字按钮
1.需求:
所有导航栏两侧的文字式按钮统一样式
普通样式:橙色
高亮样式:红色
不可用样式:亮灰
阴影:不使用
字体大小:15
 
 
2.实现效果
默认样式:
 
统一使用样式:
 
3.思路
  • 在创建item的时候逐个设置:代码超级冗余
  • 抽取创建公共父类:稍好的选择,但是继承了此公共父类的控制器,就不能操作其去继承系统自带的控制器类了,造成很大的隐患。iOS中控制器不建议提取公共父类,最好直接继承系统自带控制器。
  • 使用主题appearance统一设置所有UIBarButtonItem的样式:采用!在自定义的UINavigationController的类初始化方法中实现一次,就可以改变所有使用了此类的BarButtonItem样式
 
4.实现
HVWNavigationViewController.m:
 /** 类初始化的时候调用 */
+ (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]; }
 
B.设置导航栏样式
1.需求:
  • 统一显示文字颜色:黑色
  • 文字阴影:禁止
  • 字体大小:20
 
 
2.思路:同“A”
 
3.实现:
同“A"
HVWNavigationViewController.m:
 /** 统一设置导航栏样式 */
+ (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] - 设置导航栏主题(统一样式)的更多相关文章

  1. IOS开发中设置导航栏主题

    /** * 系统在第一次使用这个类的时候调用(1个类只会调用一次) */ + (void)initialize { // 设置导航栏主题 UINavigationBar *navBar = [UINa ...

  2. [iOS微博项目 - 4.3] - 设置每条微博边框样式

    github: https://github.com/hellovoidworld/HVWWeibo A.设置每条微博边框样式 1.需求 不需要分割线 每个微博之间留有一定的间隙   2.思路 直接设 ...

  3. [iOS微博项目 - 4.2] - 设置转发微博背景

    github: https://github.com/hellovoidworld/HVWWeibo A.转发微博部分的淡灰色背景 1.需求 转发微博部分需要设置背景色 使用图片作为背景   2.思路 ...

  4. 美团HD(1)-设置导航栏主题

    自定义一个UINavigationController DJNavigationController.h #import <UIKit/UIKit.h> @interface DJNavi ...

  5. iOS导航栏主题

    主要是取得导航栏的appearance对象,操作它就设置导航栏的主题 UINavigationBar *navBar = [UINavigationBar appearance]; 常用主题设置 导航 ...

  6. iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)

    一.UI_APPEARANCE_SELECTOR 彩票项目中appearance的用法一直没有搞明白,这次通过第二个项目中老师的讲解,更深一层次的了解到了很多关于appearance的作用以及使用方法 ...

  7. 【转】iOS中设置导航栏标题的字体颜色和大小

    原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...

  8. iOS中设置导航栏标题的字体颜色和大小

    iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的 ...

  9. IOS 设置导航栏

    //设置导航栏的标题 self.navigationItem setTitle:@"我的标题"; //设置导航条标题属性:字体大小/字体颜色…… /*设置头的属性:setTitle ...

随机推荐

  1. Python转义字符

    在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串.如:print r'\t\r'实际输出为“ ...

  2. Math.sqrt

    java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根.特殊情况: 如果参数是NaN或小于为零,那么结果是NaN. 如果参数是正无穷大,那么结果为正无穷 ...

  3. bzoj3994

    智商太低了 详细题解在这里http://blog.csdn.net/zmoiynlp/article/details/45176129 ; ..max] of longint; g:..max] of ...

  4. 【笨嘴拙舌WINDOWS】编码历史

    在介绍历史之前,有必要将一个经常使用的词语"标准"解释一下: " 标准是"为了在一定的范围内获得最佳秩序,经协商一致制定并由公认机构批准,共同使用的和重复使用的 ...

  5. inline-block和text-indent在IE6,IE7下同时使用的兼容问题解决方法

    在实际应用中,考虑到seo,很多button,icon都要用到inline-block和text-indent来处理,例如: <a href="#">Button< ...

  6. Nodejs express中创建ejs项目 error install Couldn't read dependencies

    最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了   书上命令为:   express -t ejs microblog 可是执行 ...

  7. [反汇编练习] 160个CrackMe之009

    [反汇编练习] 160个CrackMe之009. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  8. UVA 11806 Cheerleaders (容斥原理)

    题意 一个n*m的区域内,放k个啦啦队员,第一行,最后一行,第一列,最后一列一定要放,一共有多少种方法. 思路 设A1表示第一行放,A2表示最后一行放,A3表示第一列放,A4表示最后一列放,则要求|A ...

  9. Swift入门篇-swift简介

    潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...

  10. ORACLE 远程连接数据库

    通过运行->cmd->sqlplus/nolog 登录sqlplus时,突然间提示“sqlplus不是内部或外部命令,也不 是可运行的程序或批处理文件”,如下图: 分析后感觉不可能啊,因为 ...