如何隐藏导航栏后退按钮中的后退箭头?

How can I hide the back arrow in the navigation bar's back button?

我有一个导航控制器,我想为其覆盖默认的后退箭头图像和文本。基本上,我想隐藏 < 小箭头,而不是 < Back,只显示 Back 文本。我已经能够用另一个图像替换后退箭头,所以我想我只是尝试用图像替换它,然后将图像设置为与背景颜色相匹配。我怎样才能做到这一点?

在 AppDelegate.swift 我有这个:

extension UINavigationItem{
    override open func awakeFromNib() {
        super.awakeFromNib()
        let backItem = UIBarButtonItem()
        backItem.title = ""
        backItem.image = UIImage(named: "icons8_burger")
        self.backBarButtonItem = backItem
    }
}

在单击按钮时我们发送到的控制器的 viewDidLoad() 中,我有这个:

override func viewDidLoad() {
        super.viewDidLoad()
        let burger = UIImage(named: "icons8_burger")

        navigationController?.navigationBar.backIndicatorImage = burger
        navigationController?.navigationBar.backIndicatorTransitionMaskImage = burger
    }

那么,我有什么办法可以做到这一点吗?到目前为止我还没有找到我要找的东西。

感谢任何建议!

将emply图像应用于navigationController

navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")

如果你这样做,

navigationController?.navigationBar.backIndicatorImage = nil
navigationController?.navigationBar.backIndicatorTransitionMaskImage = nil

navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "")

然后默认iOS使用<作为默认图像。

要删除此图片,您需要添加空白透明图片。我使用了来自 here and google image reference is here

的示例

现在将图像像素大小减小到 (1,1) 并添加您的资产并使用以下代码。

navigationController?.navigationBar.backIndicatorImage = UIImage(named: "Blank")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "Blank")

此处 空白 是我资产中的相同图像名称。

使用如下所示的空图像对象,

    let mask = UIImage()
    navigationController?.navigationBar.backIndicatorImage = mask
    navigationController?.navigationBar.backIndicatorTransitionMaskImage = mask
    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)

如果您想使用外观 - backIndicator* 变量都是 read-only。
尝试下一个 code-only 方法。在 iOS 15.2

上测试
private func setupNavBar() {
    let navBarAppearance = UINavigationBarAppearance()
    let blankImage = UIImage.withColor(UIColor.white.withAlphaComponent(0))

    navBarAppearance.setBackIndicatorImage(blankImage, transitionMaskImage: blankImage)
}

extension UIImage {

    static func withColor(_ color: UIColor) -> UIImage {
        let onePx = pixelsToPoints(1)
        let rect = CGRect(x: 0, y: 0, width: onePx, height: onePx)

        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
        let context = UIGraphicsGetCurrentContext()

        context!.setShouldAntialias(false)
        context!.setFillColor(color.cgColor)
        context!.fill(rect)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image!
    }

    static func pixelsToPoints(_ pixels: CGFloat) -> CGFloat {
        return pixels / UIScreen.main.scale
    }
}