问题1:去掉navigation bar下方线条
1. self.navigationController.navigationBar.barStyle = UIBaselineAdjustmentNone;
2.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIImageView *navigationBarBottomLine = [self findBottomLineUnder:self.navigationController.navigationBar];
navigationBarBottomLine.hidden =YES;
}
- (UIImageView *)findBottomLineUnder:(UIView *)view {
// 符合条件返回控件
if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
return (UIImageView *)view;
}
// 递归查找
for (UIView *subview in view.subviews) {
UIImageView *imageView = [self findBottomLineUnder:subview];
if (imageView) {
return imageView;
}
}
return nil;
}
```
####问题2:色差产生的原因
苹果对iOS7及以上的导航栏的高斯模糊处理,即为:导航栏后面的视图或者对导航栏的背景(或背景图)显示出来。
如果单纯的设置背景颜色也是有高斯模糊处理的效果,对纯色高斯模糊处理过后相当于纯色的70%(猜测)透明化处理
取消模糊处理的解决方法
self.navigationController.navigationBar.translucent = NO;
此方法有弊端,会导致布局下移
####问题3:同事解决这两种问题
1. 单页面设置
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; // 此处的[UIImage new]可以替换成图片
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
如果不想影响其他页面的导航透明度,viewWillDisappear将其设置为nil即可:
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];
2. 全局页面设置
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
此方法有弊端,会导致布局下移
#### 注意事项
问题1下的1:&& 问题3可能会出现奇怪的白线条.
出现白色横条.jpeg
问题1下的2能解决这个问题
WechatIMG4.jpeg
问题2和问题3两种解决方案都会引起做坐标系的改变。
坐标问题可以
self.extendedLayoutIncludesOpaqueBars = YES; 来解决
参考:
http://www.jianshu.com/p/aa547432eae0
http://blog.csdn.net/u014220518/article/details/51132787
设置这个有用??
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];