隐藏导航条底部的黑线(shadowImage)四种办法

方法一.当设置navigationBar的背景图片时移除黑线的方法,该方法会使translucent属性失效

[objc]   view plain  copy
  1. //方法一.当设置navigationBar的背景图片时移除黑线的方法,该方法会使translucent属性失效  
  2. -(void)useShadowImageRemoveBlackLine  
  3. {  
  4.     //通过设置shadowImage移除黑线  
  5.     [self.navigationController.navigationBar setShadowImage:[UIImage new]];  
  6. }  

方法二.当设置navigationBar的背景图片或背景色时,使用该方法都可移除黑线,且不会使translucent属性失效( 推荐
[objc]   view plain  copy
  1. //方法二.当设置navigationBar的背景图片或背景色时,使用该方法都可移除黑线,且不会使translucent属性失效  
  2. -(void)useMethodToFindBlackLineAndHind  
  3. {  
  4.     UIImageView* blackLineImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];  
  5.     //隐藏黑线(在viewWillAppear时隐藏,在viewWillDisappear时显示)  
  6.     blackLineImageView.hidden = YES;  
  7. }  
  8. - (UIImageView *)findHairlineImageViewUnder:(UIView *)view  
  9. {  
  10.     if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0)  
  11.     {  
  12.         return (UIImageView *)view;  
  13.     }  
  14.     for (UIView *subview in view.subviews) {  
  15.         UIImageView *imageView = [self findHairlineImageViewUnder:subview];  
  16.         if (imageView) {  
  17.             return imageView;  
  18.         }  
  19.     }  
  20.     return nil;  
  21. }  

方法三.简单移除黑线方法
[objc]   view plain  copy
  1. //方法三.简单移除黑线方法  
  2. -(void)useClipsToBoundsRemoveBlackLine  
  3. {  
  4.      //设置移除黑线  
  5.     self.navigationController.navigationBar.clipsToBounds = YES;  
  6. }  

方法四. 移除黑线(不推荐)
[objc]   view plain  copy
  1. //方法四.移除黑线(不推荐)  
  2. -(void)removeBlackLine  
  3. {  
  4.     [self.navigationController.navigationBar setBackgroundImage:[UIImage new]  
  5.                                       forBarPosition:UIBarPositionAny  
  6.                                           barMetrics:UIBarMetricsDefault];  
  7.       
  8.     [self.navigationController.navigationBar setShadowImage:[UIImage new]];  
  9. }  

你可能感兴趣的:(oc)