iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】NavigationBarの戻るボタンをカスタマイズしよう

今回は初学者向けに、Swift で NavigationBar の戻るボタンをカスタマイズする際のベストプラクティスを紹介したいと思います🧑‍🔧

ちなみに今回のゴールは下記のようになります。

before after
f:id:yum_fishing:20201206183745p:plain f:id:yum_fishing:20201206183738p:plain

コード

まず前提として覚えておく必要があるのは、戻るボタンは ImageText から構成されているということです。下記のコードでは、navigationController?.navigationBar.backIndicatorImage = hogeImageImage を、navigationItem.backBarButtonItem = backItemText をそれぞれカスタマイズしています。

下記の setBackBarButton() をナビゲーションのルートで呼び出すことで、それ以降に登場する戻るボタンを共通のものにすることができます。

    func setBackBarButton() {
        let backItem  = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
        backItem.tintColor = .black
        navigationItem.backBarButtonItem = backItem
        navigationController?.navigationBar.backIndicatorImage = hogeImage
        navigationController?.navigationBar.backIndicatorTransitionMaskImage = hogeImage
    }

navigationBar のそれぞれのプロパティの説明は下記の通りです。

backIndicatorImage

backIndicatorImage は、戻るボタンの横に表示される Image を表します。

document: https://developer.apple.com/documentation/uikit/uinavigationbar/1624942-backindicatorimage

backIndicatorTransitionMaskImage

backIndicatorTransitionMaskImage は、画面遷移時にコンテンツのマスクとして使用される画像を表します。

document: https://developer.apple.com/documentation/uikit/uinavigationbar/1624938-backindicatortransitionmaskimage

また、遷移先で navigationItem.backBarButtonItem = backItem を呼び出すことで戻るボタンをカスタマイズすることもできますが、この場合システム標準のスライドバックなどができなくなってしまうので注意が必要です。

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com