繁体   English   中英

隐藏 iOS 13 上的导航栏分隔线

[英]Hide Navigation bar separator line on iOS 13

我有一个带有大标题导航栏的视图 controller。 当我推动 controller 时,仅在 iOS 13 上是导航栏下可见的一条线。 我该如何解决?

我已经在 Stack 上尝试了几种解决方案,但它们并没有像这样工作:

let navigationBar = navigationController?.navigationBar
let navigationBarAppearence = UINavigationBarAppearance()
navigationBarAppearence.shadowColor = .clear
navigationBar?.scrollEdgeAppearance = navigationBarAppearence

使用此代码段,即使我将“透明颜色”更改为红色,它也仅在第一个 controller 中可见,在推送的 controller 中它始终为灰色。

我该如何解决?

编辑

我已经解决了:

if #available(iOS 13.0, *) {
    let appearance = UINavigationBarAppearance()
    appearance.shadowColor = nil
    navigationController?.navigationBar.standardAppearance = appearance
 }
import UIKit

public protocol HideableHairlineHelper {
    func hideHairline()
    func showHairline()
}

extension HideableHairlineHelper where Self: UIViewController {

    public func hideHairline() {
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
    }

    public func showHairline() {
        self.navigationController?.navigationBar.shadowImage = nil
    }
}

这是我在控制器上使用的 NavBar 模板,没有线条。

navigationController?.setNavigationBarHidden(false, animated: false)
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
    let titleAttributes =
        [
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18),
            NSAttributedString.Key.foregroundColor: UIColor.red,
    ]
    self.navigationController?.navigationBar.titleTextAttributes = titleAttributes

我显然改变了字体大小和颜色,但这是我为每个 controller 放置的基本 function 以使其清晰(半透明)。

我已经尝试了上述建议,但未能删除导航分隔线。 最终,我想通了使用TransparentBackground

诀窍是用TransparentBackground初始化UINavigationBarAppearance 然后您可以轻松删除导航栏的水平线。

let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = UIColot.green // Required background color

然后按照苹果的建议将外观更改添加到导航项。

self.navigationItem.standardAppearance = appearance
self.navigationItem.scrollEdgeAppearance = appearance
self.navigationItem.compactAppearance = appearance

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM