设置导航栏阴影
- (void)setNavgationBarShadowHidden:(BOOL)navgationBarShadowHidden
{
_navgationBarShadowHidden = navgationBarShadowHidden;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
UIImage *image = nil;
if (_navgationBarShadowHidden) {
image = [UIImage new];
}
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:image];
});
}
设置导航栏透明
- (void)setNavgationBarTranslucent:(BOOL)navgationBarTranslucent
{
_navgationBarTranslucent = navgationBarTranslucent;
if (_navgationBarTranslucent) {
//导航栏 navbar
UIImage *image = [UIImage new];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setTranslucent:YES];
// 为什么要加这个呢,shadowImage 是在ios6.0以后才可用的。但是发现5.0也可以用。不过如果你不判断有没有这个方法,
// 而直接去调用可能会crash,所以判断下。作用:如果你设置了上面那句话,你会发现是透明了。但是会有一个阴影在,下面的方法就是去阴影
if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])
{
[self.navigationController.navigationBar setShadowImage:image];
}
// // 以上面4句是必须的,但是习惯还是加了下面这句话
[self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];
}else{
[self.navigationController.navigationBar setTranslucent:NO];
// 以上面4句是必须的,但是习惯还是加了下面这句话
[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]];
}
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
}