如何清晰高效设置UINavigationBar样式

 我来答
就烦条0o
2016-08-02 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
实现代码

HomeViewController.m
//详细代码不一一列出

//生成UINavigationController实例
UINavigationController *nav = [UINavigationController alloc] init];}

//设置title的文字属性
NSDictionary * dict = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];

nav.navigationBar.titleTextAttributes = dict;

//背景颜色
nav.navigationBar.barTintColor = [UIColor whiteColor];

//设置背景是否透明
nav.navigationBar.translucent = NO;

但这样写的问题是设置UIView属性的工作应该尽量不要交给Controller去实现,这样对代码阅读和维护性都增加了难度,而且重用性低。那如何分离view属性设置的代码?个人建议就是创建一个子类view,在view的初始化的时候就设置其属性。

创建两个文件BasicNavigationBar.h和BasicNavigationBar.m

BasicNavigationBar.h
#import <UIKit/UIKit.h>

@interface BasicNavigationBar : UINavigationBar

@end

BasicNavigationBar.m
#import "BasicNavigationBar.h"

@implementation BasicNavigationBar

//重写初始化view
- (id)init {

if (self = [super init]) {
[self setBasicAttributes];
}

return self;
}

/**
* @author 老区
*
* @brief 设置基础属性,设置是针对iOS 7.0或以上,7.0以下果断抛弃
*/
- (void)setBasicAttributes {

//标题属性
self.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor],NSForegroundColorAttributeName ,//字体颜色
[UIFont boldSystemFontOfSize:20],NSFontAttributeName //字体大小和样式
, nil];

//设置背景颜色
self.barTintColor = [UIColor colorWithRed:0.7255 green:0.1059 blue:0.1098 alpha:1.0];

//设置背景是否透明
self.translucent = NO;

/**
* 添加更多其它属性设置
*/
}

@end

HomeViewController.m
//生成UINavigationController实例
UINavigationController *nav = [UINavigationController alloc] init];}

/**
* @author 老区
*
* 这里是关键,设置新的NavigationBar
*/
[nav setValue:[BasicNavigationBar new] forKeyPath:@"navigationBar"];

文/LeoAu(简书作者)
原文链接:http://www.jianshu.com/p/435d8b09d75a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式