こんにちは!株式会社メモリアインクのふくしまです!
この記事では、iOS 13.0以降で利用可能となったUINavigationBarAppearance
クラスを活用してタイトルのフォントや色など、さまざまなスタイルのカスタマイズ方法を解説します。
この記事を読んで分かること…
・UINavigationBarAppearance
クラスとは?
・ナビゲーションバーのタイトルのカスタマイズ方法
・ナビゲーションバーの色やスタイルのカスタマイズ方法
・ナビゲーションバーの表示・非表示の切り替え方法
環境
・Swift5.9
・Xcode15
UINavigationBarAppearanceとは?
UINavigationBarAppearance
はiOS 13.0以降で導入されたクラスで、ナビゲーションバーの外観をカスタマイズするための詳細な設定を行うことができます。
このクラスを使用することで、ナビゲーションバーの背景色、テキスト属性、ボタンスタイルなど、さまざまな要素を細かく制御できるようになります。
ナビゲーションバーのタイトルの変更
このセクションでは、ViewControllerのナビゲーションバーにタイトルを設定する方法を解説します。
タイトルの変更にはUINavigationBarAppearance
クラスを使用する必要はなく、ViewControllerのナビゲーションアイテムのタイトルを変更します。
ここで設定したタイトルは、次の画面に継承されますので、別途次画面でも設定が必要です。
前提(UIの設定)
①MainStoryboardでViewControllerを選択
②Editor→Embed In→Navigation Controllerを選択して、Navigation Controllerを追加
③次の画面に遷移するためのボタンをViewControllerに配置
④遷移先のSecondViewControllerに直接segueで遷移する(Show)
画面遷移の方法については、以下の記事で詳しく解説しているので、画面遷移の方法についてまだよくわからない!という方はご参考ください。
サンプルコード
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "ホーム"
}
}
サンプルコードの説明
◾️行4-8: ViewController
クラスのviewDidLoad
メソッド内で、ナビゲーションバーのタイトルを”ホーム”に設定しています。
表示確認
それでは表示確認してみましょう〜
ナビゲーションバーのスタイル設定
ナビゲーションバーの背景色、テキスト属性などのスタイルをカスタマイズする方法をUINavigationBarAppearance
を使って紹介します。
サンプルコード
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.configureNavigationBar()
}
func configureNavigationBar() {
if #available(iOS 15.0, *) {
let appearance = UINavigationBarAppearance()
// 不透明な背景を設定
appearance.configureWithOpaqueBackground()
// 背景色を設定
appearance.backgroundColor = .systemOrange
// テキストの色を設定
appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
// ナビゲーションバーの標準時の外観のカスタマイズを適用
navigationController?.navigationBar.standardAppearance = appearance
// ナビゲーションバーのスクロール時の外観のカスタマイズを適用
navigationController?.navigationBar.scrollEdgeAppearance = appearance
} else {
// iOS 15未満の場合のナビゲーションバーの背景色を設定
navigationController?.navigationBar.barTintColor = .systemBlue
// iOS 15未満の場合のナビゲーションバーのテキストの色を設定
navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
}
}
サンプルコードの説明
◾️行 1-5: ViewController
クラスの定義を開始し、UIViewController
を継承します。viewDidLoad()
メソッド内でconfigureNavigationBar()
関数を呼び出して、ナビゲーションバーの設定を行います。
◾️行 7-23: configureNavigationBar()
関数を定義します。この関数は、ナビゲーションバーの外観をカスタマイズするために使用されます。
・行 8: iOS 15.0以降であるかをチェックします。これにより、iOS 15.0以降のデバイスでのみ新しい外観APIが使用されます。
・行 9: UINavigationBarAppearance
オブジェクトを初期化します。これを使用してナビゲーションバーの外観をカスタマイズします。
・行 11: appearance
に不透明な背景を設定します。
このコードにより、ナビゲーションバーは不透明なオレンジ色の背景を持ち、下にあるコンテンツはナビゲーションバーを通して見えなくなります。
・行 13: ナビゲーションバーの背景色をシステムオレンジ色に設定します。
・行 15: ナビゲーションバーのタイトルテキストの色を白色に設定します。
・行 17: standardAppearance
プロパティにカスタマイズしたappearance
オブジェクトを適用して、ナビゲーションバーの標準時の外観を設定しています。
・行 19: scrollEdgeAppearance
プロパティにも同じappearance
オブジェクトを適用し、ナビゲーションバーがスクロール時の外観も設定しています。
◾️行 20-25: iOS 15.0未満の場合のナビゲーションバーの背景色とテキスト色の設定を行っています。
動作確認
それでは動作確認してみましょう〜
まとめ
いかがでしたか?
この記事では、ナビゲーションバーのタイトル設定や様々なスタイルのカスタマイズ方法について解説しました。
この記事が皆様のお役に立てれば光栄です。
この記事があなたのスキルアップに役立ったなら、次のキャリアステップを踏み出す絶好の機会かもしれません。エンジニアとしてのさらなる成長と挑戦を求めるなら、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
コメント