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

3
我有一个导航控制器,我想覆盖默认的返回箭头图像和文本。基本上,我想隐藏小的“<”,只显示“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
    }

那么,你有什么想法可以实现这个目标吗?迄今为止,我还没有找到我要的东西。任何建议都将不胜感激!

你需要隐藏默认的返回按钮,并替换为自定义的左侧栏按钮项目。 - Nikunj Kumbhani
4个回答

4
如果您这么做,
navigationController?.navigationBar.backIndicatorImage = nil
navigationController?.navigationBar.backIndicatorTransitionMaskImage = nil

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

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

要删除此图像,您需要添加空白透明图像。我使用了这里提供的样本和Google图像参考这里

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

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

这里Blank是我资产中相同的图像名称。


这个回答和Korona的回答都对我有用,实际上我会使用Korona的,但由于这个回答是先发布的并且也有效,所以我将把它标记为答案。 - zbbz

3
使用下面这样的空图像对象: 最初的回答
    let mask = UIImage()
    navigationController?.navigationBar.backIndicatorImage = mask
    navigationController?.navigationBar.backIndicatorTransitionMaskImage = mask
    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)

1
如果你想使用外观 - 两个backIndicator*变量都是只读的。
尝试下一个仅代码的方法。在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
    }
}

-2

将空图像应用于navigationController

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接