概要
本記事では、カスタマイズされたNavigationBarを用いて画面遷移した際、BackButtonのサイズが意図せず大きくなってしまう問題の対処法を紹介します。
プロジェクトの構成や具体的な再現方法には触れませんが、同様の問題に直面した際の参考にしていただければ幸いです。
背景
私の所属しているプロジェクトでは、不透明な色、透明、および非表示の状態を持つ3種類のNavigationbarがあります。
これらの異なるタイプのNavigationbarが混在すると、画面遷移時にスタイルが崩れやすくなるため、独自にカスタマイズしたNavigationbarを使用しています。
問題
特定の条件下で、タイトルの位置がずれるという問題に遭遇しました。
再現手順はアプリに依存するため、エッジケースだと考えられます。
原因
ViewDebuggerでViewの状態を確認した結果、BackButtonのサイズが大きくなっていることが原因でした。
BackButtonの内部構造を調べたところ、_UIModernBarButton
によって2つの部分から構成されていることがわかりました。
1つ目は矢印アイコン用の領域、2つ目は「戻る」テキストを表示する領域です。
(アプリデザインの都合上、独自の矢印アイコン、「戻る」のテキストを非表示に設定)
対処法
直接的に影響する実装がないことから、特定の条件下で発生するUIKitの不具合だと考えます。
この問題に対して根本的な解決が難しいと判断し、応急処置として対応することにしました。
具体的には、navigationItem.backButtonDisplayMode = .minimal
を設定することで、「戻る」テキストの領域を縮小し、この問題に対処しました。
おわりに
本記事では、特定の条件下でのUIKitの不具合に対処するための応急処置を紹介しましたが、内容が全て正しいとは限りません。
間違いや改善点がございましたら、ぜひご指摘いただければ幸いです。