gpt4 book ai didi

ios - 如何更改 iOS 13 导航栏中的后退按钮图像?

转载 作者:行者123 更新时间:2023-12-02 05:33:17 25 4
gpt4 key购买 nike

On the right, the first time and on the left, all the other times

大家好,我是新来的,所以我希望这就是这里的情况!

众所周知,iOS 13 引入了 UI 更改。我们有一个应用程序正在生产中,我最近醒来(可能有点太晚了哈哈),当我在新更新的 iOS 13 设备上编译并启动它时,我意识到还有一些工作要做!我通过不启用黑暗模式来处理它,我处理了我的模式,但有一件事我似乎无法像 iOS 12 那样制作,那就是我的导航栏 UI。

我们使用自定义后退按钮图像,经过几个小时的战斗,我终于成功了,但每次都可以,除了第一次。我第一次总是使用默认图标,然后当我回到同一个 Controller 时,就没关系了。

这是一张照片(在问题的开头),以便您可以理解以及我的代码!我知道可以通过“whenContained”使用特定 VC 的外观,但我似乎无法弄清楚,因为它们都在导航 Controller 中,而且我不知道如何区分它们。

fileprivate func navigationBarWithBackgroundColor(_ backgroundColor: UIColor, TintColor tintColor: UIColor, displayBackButtonIfNeeded: Bool, BackImage imageName:String, displayShadowBar: Bool = false) {

let backButtonImage = UIImage(named: imageName)

if #available(iOS 13.0, *) {

let appearance = UINavigationBarAppearance()
appearance.backgroundColor = backgroundColor

appearance.titleTextAttributes = [.foregroundColor: tintColor]
appearance.setBackIndicatorImage(backButtonImage, transitionMaskImage: backButtonImage)
appearance.shadowImage = displayShadowBar ? UIImage(named:"") : UIImage()

let back = UIBarButtonItemAppearance()
// hide back button text
back.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]
appearance.backButtonAppearance = back

navigationController?.navigationBar.tintColor = tintColor
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.compactAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance

} else {
if displayBackButtonIfNeeded {
self.navigationController?.navigationBar.backIndicatorImage = backButtonImage
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = backButtonImage
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItem.Style.plain, target: nil, action: nil)

} else {
self.navigationItem.setHidesBackButton(true, animated: false)
}

self.navigationController?.navigationBar.barTintColor = backgroundColor
self.navigationController?.navigationBar.tintColor = tintColor
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:""), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = displayShadowBar ? UIImage(named:"") : UIImage()
}
}

我在这里基本上变得疯狂了,我想我错过了一些非常明显的东西,所以如果你们有除了苹果文档之外的任何提示或线索,请随时分享:)

提前致谢!

最佳答案

在iOS 13中,您只能通过该功能设置后退按钮图像和过渡 mask 图像

func setBackIndicatorImage(UIImage?, transitionMaskImage: UIImage?)

这是一个例子

standartAppearence.setBackIndicatorImage(#imageLiteral(resourceName: "backButton"), transitionMaskImage: #imageLiteral(resourceName: "backButton"))

关于ios - 如何更改 iOS 13 导航栏中的后退按钮图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57884699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com