解决透明NavigationBar底部出现莫名其妙横线问题

有一个页面要实现透明NavigationBar,实现了之后发现一个奇怪的问题:第一次进入此页面显示透明NavigationBar正常,返回上一级页面再重新进入,NavigationBar的底部出现了一条大约1px的横线,怎么都消除不了。

用Reveal查了一下这个横线,是一个UIImageView,0.5px高度,第一次正常显示的时候center y坐标为63.75,所以显示正常;返回上一级页面时再重新进入,center y坐标为64.25,正好出现在NavigationBar的下面而没有被它覆盖。

猜测是因为要实现透明NavigationBar在其中加了一个64px高度的OverLay View影响了这条横线的位置。最后在这篇文章中找到了解决方法:

First – declare instance variable:

@implementation MyViewController {
    UIImageView *navBarHairlineImageView;}

Then, in viewDidLoad do:

navBarHairlineImageView = [self findHairlineImageViewUnder:navigationBar];

Method which finds the image view we need:

- (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;}

And this will do the rest of magic:

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

Same method should also work for UISearchBar hairline.

时间: 2024-11-07 12:06:32

解决透明NavigationBar底部出现莫名其妙横线问题的相关文章

IOS去掉NavigationBar底部的那条黑线

NavigationBar底部的黑线是一个UIImageView上的UIImageView. if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){ NSArray *list=self.navigationController.navigationBar.subviews; for (id obj in list) { if

设置透明navigationBar

三行代码轻松实现透明navigationBar:  [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; [self.navigationController.navigationBar s

【css】jquery.pngFix.js解决透明问题

/** * -------------------------------------------------------------------- * jQuery-Plugin "pngFix" * Version: 1.2, 09.03.2009 * by Andreas Eberhard, [email protected] * http://jquery.andreaseberhard.de/ * * Copyright (c) 2007 Andreas Eberhard *

去除navigationbar 底部黑线

1,去除navigationbar 底部黑线 ——亲测可用 if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){ NSArray *list=self.navigationController.navigationBar.subviews; for (id obj in list) { if ([obj isKindOfCla

iOS navigationBar和tabBar变透明 &amp; navigationBar根据滑动距离的渐变色实现

navigationBar变为纯透明 //第一种方法 //导航栏纯透明 [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; //去掉导航栏底部的黑线 self.navigationBar.shadowImage = [UIImage new]; //第二种方法 [[self.navigationBar subviews] objectAtIndex:0].alpha =

去掉NavigationBar底部的黑线

UINavigationBar *navigationBar = self.navigationController.navigationBar; [navigationBar setBackgroundImage:[UIImage imageNamed:@"parentTopBackgroupd"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; [navigationBar setShadowImag

去掉NavigationBar底部的黑线(亲测可用)

code: UINavigationBar *navigationBar = self.navigationController.navigationBar; [navigationBar setBackgroundImage:[UIImage imageNamed:@"parentTopBackgroupd"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; [navigationBar setShad

去掉 NavigationBar 底部的那条黑线

//加入下面两行代码即可[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

解决CSS图片底部3像素问题总结

1 环境说明 JDK: 1.8 MAVEN: 3. SpringBoot: 2.0.4 2 SpringBoot集成Mybatis-Plus 2.1 创建SpringBoot 利用IDEA创建SpringBoot项目,引入web mysql mybatis-plus lombok devtools依 ... 653rai悼抑戳眯陨桨<http://baobao.baidu.com/question/ba4ad4dffdea7da838c2d08783ca1801.html?=D>435rqv示