关于自定义导航栏的那些事儿 UINavigationController

本文只是把我看到的关于自定义导航栏的一些资料搜集了一下

自定义导航栏样式的方法有两种:

1.通过[UINavigationBarapperance]来给整个应用上的所有的navigationbar添加样式,这是一个全局的样式设置。

2.当然如果你想要给当前的某一特定的navigationbar添加特定样式就可以通过self.navigationController.navigatinoBar找到当前bar实例,再进行样式设置。

第二种方法,想必大家都知道,相关资料一搜一大把,不累赘了。

主要说说第一种方法,如果给整个应用的话,可以自定义一个CustomNavigationController继承自UINavigationController,然后在CustomNavController中重写init方法

+ (void)initialize {

// 1.appearance方法返回一个导航栏的外观对象

//修改了这个外观对象,,相当于修改了整个项目中的外观

[navigationBarsetBarTintColor:kColorNavBar];

// iOS7的情况下,设置NavigationBarItem文字的颜色

// 3.设置导航栏文字的主题

NSShadow *shadow = [[NSShadowalloc]init];

[shadowsetShadowOffset:CGSizeZero];

NSForegroundColorAttributeName

NSShadowAttributeName : shadow}];

// [navigationBar setBackgroundImage:[UIImage imageNamed:@"ic_cell_bg_selected"] forBarMetrics:UIBarMetricsDefault];

// 4.修改所有UIBarButtonItem的外观

kIsIOS7OrMore) {

[barButtonItemsetTintColor:[UIColorwhiteColor]];

}else {

// 修改item的背景图片

//[barItem setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

//[barItem setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background_pushed.png"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];

// 修改item上面的文字样式

NSShadowAttributeName : shadow};

[barButtonItem setTitleTextAttributes:dictforState:UIControlStateNormal];

[barButtonItem setTitleTextAttributes:dictforState:UIControlStateHighlighted];

}

//修改返回按钮样式

// [barButtonItem setBackButtonBackgroundImage:[UIImage imageNamed:@"ic_back"] forState:UIControlStateNormal barMetrics:UIBarMetricsCompact];

// 5.设置状态栏样式

sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

}

如果想要统一定制返回按钮样式的话,可以重写如下方法

//重写返回按钮

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

{

[superpushViewController:viewControlleranimated:animated];

navigationItem.leftBarButtonItem ==nil &&

viewController.navigationItem.leftBarButtonItem = [selfcreatBackButton];

}

}

-(UIBarButtonItem *)creatBackButton

{

allocimageNamedstyleaction

//或[[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(popSelf)];

}

-(void)popSelf

{

popViewControllerAnimated

}

另外,说点导航栏的小细节:

喜欢就喜欢了,心被牵动,无须理由,爱上你是我的自由,

关于自定义导航栏的那些事儿 UINavigationController

相关文章:

你感兴趣的文章:

标签云: