在 Swift 3.0 的应用程序的所有屏幕中更改返回按钮图像

Posted

技术标签:

【中文标题】在 Swift 3.0 的应用程序的所有屏幕中更改返回按钮图像【英文标题】:Change back button image in all screen of app in Swift 3.0 【发布时间】:2016-11-22 09:43:33 【问题描述】:

我尝试使用以下代码但无法得到结果。

let backArrowImage = UIImage(named: "backButton")!
UINavigationBar.appearance().backIndicatorImage = backArrowImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backArrowImage

UIBarButtonItem.appearance().setBackButtonBackgroundImage(backArrowImage, for: .normal, barMetrics: .default)

我还有什么需要做的吗?

【问题讨论】:

为此创建一个类别......并从所有视图控制器的 ViewDidAppear 调用相同的方法 你在哪里打电话UIBarButtonItem.appearance().setBackButtonBackgroundImage(backArrowImage, for: .normal, barMetrics: .default) 您是否在 UIBarButtonItem 中嵌入了 UIButton? 首先将图像“backButton”重命名为“backButton_old”,然后添加所需的后退按钮并将名称替换为“backButton”。 【参考方案1】:

我在项目中使用的一些方法。

1)创建自定义导航控制器:

class CustomNavigationViewController: UINavigationController 

override func viewDidLoad() 
    super.viewDidLoad()
    self.navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(title: "\0x00a0", style: .Plain, target: nil, action: nil)
    // Do any additional setup after loading the view, typically from a nib.


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.




2) 在 vi​​ewDidLoad 或 viewWillAppear 中设置 : // 你需要的用户

func configureNavController() 
    self.title = "navTitle"
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.barTintColor = //Color
    self.navigationController?.navigationBar.tintColor = //Color
    self.navigationController?.navigationBar.translucent = false

    if isRootView == true  // Do this if you are in detail view  and want to pop your VC
        let backButton = UIBarButtonItem(title: "Back".localized, style: .Plain, target: self, action: #selector(backButtonClicked))
        navigationItem.leftBarButtonItem = backButton
    
    self.navigationItem.rightBarButtonItem = self.sendButton

【讨论】:

以上是关于在 Swift 3.0 的应用程序的所有屏幕中更改返回按钮图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 3.0 中制作 5*8 集合视图 [关闭]

获取“无法打开应用程序,因为您无权查看它。 “将项目代码从swift 2.2转换为swift 3.0之后

Google Analytics(分析)屏幕跟踪 swift 3.0 不起作用

无法从同一类中的闭包中更改变量 [swift 3.0]

在 XCode 8.2 / Swift 3.0 中更改状态栏样式(没有“查看基于控制器的状态栏外观”)

Swift 3.0 静态实例,迁移工具的语法更改 [重复]