iOS去掉导航栏底部的线

第一种方法:

UINavigationBar *navigationBar = self.navigationController.navigationBar;
// white.png图片自己下载个纯白色的色块,或者自己ps做一个
[navigationBar setBackgroundImage:[UIImage imageNamed:@"white.png"]
                   forBarPosition:UIBarPositionAny
                       barMetrics:UIBarMetricsDefault];
[navigationBar setShadowImage:[UIImage new]];

运行后效果如下(此处原有的灰色背景色会被white.png代替):

PS:这是唯一一个隐藏这条线的官方用法,但是有一个缺陷-删除了translucency(半透明)

第二种方法:

1)声明UIImageView变量,存储底部横线

@implementation MyViewController {
    UIImageView *navBarHairlineImageView;
}

2)在viewDidLoad中加入:

navBarHairlineImageView = [self findHairlineImageViewUnder:navigationBar];

3)实现找出底部横线的函数

- (UIImageView *)findHairlineImageViewUnder:(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 findHairlineImageViewUnder:subview];
        if (imageView) {
            return imageView;
        }
    }
    return nil;
}

4)最后在viewWillAppear,viewWillDisappear中处理

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    navBarHairlineImageView.hidden = YES;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    navBarHairlineImageView.hidden = NO;
}

PS:第二种方法可以保持bar的translucent

原文地址:https://www.cnblogs.com/Yishu/p/9402476.html

时间: 2024-11-08 17:07:12

iOS去掉导航栏底部的线的相关文章

iOS 去掉导航栏最下面线的方法

导航栏透明,但是字体就不显示了,所以不可行. 下面两种方法是让导航栏下面的线不显示. // 方法1: [[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0]; // 方法2: [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init]forBarMetrics:UIBarMetricsDe

iOS隐藏导航栏底部灰线

首先创建 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #de38a5 } span.s1 { } span.s2 { color: #ffffff } @interface TestVC() p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px

iOS 去掉导航栏的边界黑线&amp;去掉搜索框的边界黑线和其中文本输入框的阴影 - 解决方案

去掉导航栏的边界黑线 in viewDidload: [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 去掉搜索框的边界黑线 in viewDidload:

iOS 去掉导航栏的边界灰线;去掉搜索框的边界灰线和其中文本输入框的阴影

想要实现上面这种界面,一般都会显示的与预期的不一致,尽管我们设置的颜色是一样.通过下面的步骤就可以实现: 1.关闭navigationBar的透明度 self.navigationController.navigationBar.translucent = NO; 2.利用本机数码测色计,测出导航栏颜色的rgb,再次设置导航栏的颜色和下面view的背景颜色. 3.去除导航栏下面的灰色分割线 [self.navigationController.navigationBar setBackgroun

iOS navigationBar导航栏底部与self.view的分界线的隐藏

ios开发中经常碰到各种需求,比如要求导航栏的颜色和self.view的颜色一样,当我们直接设置navigationBar的颜色和view一样时,我们会发现navigationBar还会有一条分割线留下,本文就是介绍怎么隐藏导航栏底部的分割线的. 第一种方法:不会影响导航栏translucent 半透明的显示 首先在viewDidLoad 定义一个 UIImageView *navigationImageView 来存储底部分割线. UIImageView *navigationImageVie

iOS隐藏导航栏底部的线条&amp; UINavigationBar小技巧

隐藏导航栏底部的线条 转载:https://www.jianshu.com/p/aa547432eae0 方法1 (单页面设置) [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; 如果不

让导航栏变透明,去掉导航栏下面的线

下面代码可以让导航栏变透明 [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsCompact];或者可以照一张透明的图片来填充也可以 隐藏导航栏下面的那根线navigationBar.shadowImage 这个方法不知为啥没用了 现在可以用下面这个代码这个代码是让下面那条线消失NSArray *list = self.navigationBar.

IOS 去掉导航栏(UINavigationBar)下方的横线

这是导航栏的问题,将下边的代码放在  viewWillAppear  方法中就可以实现效果: - (void)viewWillAppear:(BOOL)animated{ // Called when the view is about to made visible. Default does nothing [super viewWillAppear:animated]; //去除导航栏下方的横线 [navigationBar setBackgroundImage:[UIImage imag

iOS 为导航栏自定义按钮图案Button Image 运行出来的颜色与原本颜色不一样 -解决方案

为相机制作闪光灯,在导航栏自定义了"闪光"图案,希望点击时变换图片,但是一直没有改变,原来是因为设置了Global Tint的颜色,所以系统会自动把图片的颜色改为Global Tint的颜色. 解决方案,设置图片时,添加:imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal 源码: - (void) setFlashOn:(BOOL)isOn { if (self.captureDevice.hasFlash) { UIIm