删除导航栏下方的阴影线而不删除栏颜色?

Posted

技术标签:

【中文标题】删除导航栏下方的阴影线而不删除栏颜色?【英文标题】:Remove Shadow Line Below Navigation Bar Without Removing Bar Color? 【发布时间】:2016-08-05 19:08:59 【问题描述】:

我尝试了许多类似问题中显示的答案,但没有一个对我有用。我正在尝试删除导航栏 1px 阴影,但我尝试的一切最终都删除了栏颜色并使其变为白色/一些浅色。知道如何删除它(在 App Delegate 中?)

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 


    let redPart: CGFloat = CGFloat(65) / 255
    let greenPart: CGFloat = CGFloat(107) / 255
    let bluePart: CGFloat = CGFloat(166) / 255
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)

    UINavigationBar.appearance().barTintColor = UIColor(red: redPart, green: greenPart, blue: bluePart, alpha: 1.0)
    //Set the colors for bar button items and text
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor(), NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 22)!]



    // Override point for customization after application launch.
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(AppDelegate.checkForReachability(_:)), name: kReachabilityChangedNotification, object: nil);

    self.reachability = Reachability.reachabilityForInternetConnection();

    self.reachability!.startNotifier()


    return true

上面是我的代码,这是我尝试过的:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)

但是每次,无论它在哪条线上,栏都会开始看起来像这样,而不是我设置的蓝色......

【问题讨论】:

可能的重复:***.com/questions/32208378/… 但是有可能,请检查 Chameleon 是如何做到的:github.com/ViccAlexander/Chameleon/blob/master/Pod/Classes/… 或 github.com/samwize/UINavigationBar-Addition How to hide ios7 UINavigationBar 1px bottom line的可能重复 【参考方案1】:

你用来去除阴影的线条很好

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)

但您还需要确保导航栏不是半透明的(默认情况下是半透明的),以显示您的实心 barTintColor

UINavigationBar.appearance().isTranslucent = false

【讨论】:

【参考方案2】:

在你的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

放置这个:

  [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
                                  forBarPosition:UIBarPositionAny
                                      barMetrics:UIBarMetricsDefault];

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

斯威夫特:

放在下面的代码

UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: .Any, barMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()

下面的内部方法

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool

来源:https://***.com/a/35151251/1585677

【讨论】:

你能发布一个 Swift 的答案吗?这对我没有帮助 我确实展示了确切的代码,并说它在我上面的问题中不起作用......

以上是关于删除导航栏下方的阴影线而不删除栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何从导航栏中删除阴影线?

如何更改导航栏下方的边框颜色?

导航栏位于 iOS 应用程序中的状态栏下方

滚动时隐藏导航栏而不隐藏状态栏及其背景

导航栏中标题的默认字体大小、字体名称和阴影是多少?

使用 CSS 在 Bootstrap 中删除导航栏切换器汉堡图标的边框颜色