Posted at

UINavigationBarの戻るボタンのカスタマイズまとめ

More than 3 years have passed since last update.


環境


  • Xcode 6.1.1

  • iOS 7, 8


戻るボタンの色を変更する

スクリーンショット 2015-02-27 14.53.43.png


実装


  • AppDelegate


AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

UINavigationBar.appearance().tintColor = UIColor.redColor()

return true
}



テキストを変更

スクリーンショット 2015-02-27 15.01.52.png


実装


  • 遷移元のViewController

override func viewDidLoad() {

super.viewDidLoad()

let backButtonItem = UIBarButtonItem(title: "ほげ", style: .Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButtonItem
}

Storyboardでやったほうが手っ取り早い


テキストを非表示

スクリーンショット 2015-02-27 15.09.07.png


実装


  • 遷移元のViewController

override func viewDidLoad() {

super.viewDidLoad()

let backButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
navigationItem.backBarButtonItem = backButtonItem
}

空文字を指定する

Storyboardで設定する場合は半角スペースなどで設定する


左側の矢印画像を変更する

スクリーンショット 2015-02-27 14.39.57.png


実装


  • AppDelegate


AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

UINavigationBar.appearance().backIndicatorImage = UIImage(named: "Arrow")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: "Arrow")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

return true
}


imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)が無いとtintColorで塗りつぶされてしまうので必要。


左側の矢印画像を非表示にする

スクリーンショット 2015-02-27 15.24.47.png


実装


  • AppDelegate


AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

UINavigationBar.appearance().backIndicatorImage = UIImage()
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage()

return true
}



背景画像を設定する

スクリーンショット 2015-02-27 16.04.07.png


実装


  • AppDelegate


AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

UIBarButtonItem.appearance().setBackButtonBackgroundImage(UIImage(named: "Back"), forState: .Normal, barMetrics: .Default)

return true
}


Highlightedも指定してみたが、動かなかった。。。


その他

UIButtonからUIBarButtonItemを作ってleftBarButtonItemに設定するやり方もあるが、これだと画面の左端からスワイプして戻ることが出来ない。