美文网首页iosiOS开发小技巧UI效果
iOS去除导航栏和tabbar的1px横线

iOS去除导航栏和tabbar的1px横线

作者: 傅hc | 来源:发表于2016-07-28 19:19 被阅读7242次

    1.在自己定义的导航栏中或者设计稿中经常需要去除导航栏的1px横线,主要是颜色太不协调了

    去除之前的图片

    要去除这1px的横线,首先应该知道它是什么,在Xcode的界面调试中可以看到,它其实是UIImageView来的

    找到横线是什么了···

    其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先设置它的背景也为空,全部代码如下:

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    

    完成效果如下(是不是一干二净?):

    完成之后的效果

    既然导航栏的那一横线能去除,那tabbar那一横线也是能去除的了(其实也是shadowImage来的)···

    方法一:

    自定义UITabBarController

    方法二:

    [self.tabBarController.tabBar setBackgroundImage:[UIImage new]];
    [self.tabBarController.tabBar setShadowImage:[UIImage new]];
    

    反之,如果我们想自定义那一横线的颜色也是可以的,只要设置它的shadowImage即可。(如果有更加好的方法,希望交流一下~~)

    相关文章

      网友评论

      • _onePiece:http://www.jianshu.com/p/f94163209db1,楼主可以赏光看看我这篇文章。
      • 2d15f6a3b2a2:[self.tabBarController.tabBar setBackgroundImage:[UIImage new]];这儿若是需自定义一张图片,会发现那根线还是会出来。郁闷中
        傅hc:@灭世MasterWang :+1:
        BrianWang:好像是:
        iOS9中有6个subview,1个UITabBarBackgroundView 和 4个UITabBarButton 和 1个UIImageView;
        iOS10中有5个subview,1个_UIBarBackground 和 4个UITabBarButton,其中_UIBarBackground有2个subview,2个UIImageView.

        if ([DEVICE_SYSTEM_VERSION compare:@"10.0" options:NSNumericSearch] != NSOrderedAscending) {
        if (idx == 0) {
        NSArray *subviews = subview.subviews;
        [subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        UIView *subview = (UIView *)obj;
        if ([subview isKindOfClass:[UIImageView class]]) {
        if (idx == 1) {
        subview.hidden = YES;
        }
        }
        }];
        }
        }
      • 木头Lee:楼主,这样会让所有界面的导航栏都变透明,如果只想改变某一个界面怎么做?
        木头Lee:@Lee丶Way 嗯,解决了,就是在viewwilldisappear的回调方法中,把那个Image设置为nil就可以恢复之前样式,谢谢了
        Lee丶Way:@木头Lee 是这样的。 你将那个特定的uiimangview 用一个全局的成员变量表示, viewwillappear时 hidden,pop或者push时hidden为no 就达到效果了
      • 安少杰:不知道这种方式的人是有多彩,这个行业的水到底有多深?
      • Mr_Jia:状态栏也同时变白了
      • GavinKang:这个和隐藏导航栏有什么区别???隐藏代码不合理,容易导致导航栏和ViewController 内容不一致,这个会导致那个效果吗??除了这个,还有什么区别??
        傅hc:@iOS开发的毛毛虫 隐藏导航栏就没系统自带的导航栏用法,比如navigationBar之类的,我这个纯粹是为了跟导航栏的设计稿一致,也是为了美观
      • UGene:以解决
      • JupiAZ:实用
      • 说好买辣椒:棒棒哒
        傅hc:@修罗的爱 :stuck_out_tongue_closed_eyes:
      • 沫雨微凉_沫:刚好需要改介个,收了,:smile:
        傅hc:@沫雨微凉_沫 哈哈,有用就好
      • 广锅锅:挖槽,我完全无从下手,被你惊艳到了。
        傅hc:@广锅锅 :grin:
      • af4e8a35bc89:个人也常用这种方法来设置 蛮好的 其它方法估计也大同小异
        傅hc:@日照江湖美 哈哈,有其它方法,不过有弊端,所以我没有写出来了

      本文标题:iOS去除导航栏和tabbar的1px横线

      本文链接:https://www.haomeiwen.com/subject/xziajttx.html