UIViewControllerでUIViewController+CustomNavigationBar
というカテゴリを作成して、3行のコードでカスタムデザインのUINavigationBarサブクラスの表示と削除を簡単に処理しました!デフォルトのUINavigationBar titleViewフレームがカスタムUINavigationBar表示の後で正しくありません
しかし、私が直面する問題の1つは、カスタムナビゲーションバーを表示するビューコントローラをポップすると、以前のビューコントローラの在庫UINavigationBarのtitleViewの垂直方向のセンタリングが正しく表示されないということです。
これは説明には少し難しいですので、ここでの問題のアニメーションGIFへのリンクです:https://github.com/kenmhaggerty/UIViewController-CustomNavigationBar/blob/demo/Sample%20Project/Issue%20Demo.gif
私は私のコードで多くのことをやっているので、私はposted it to GitHubもしました。しかし、いくつかの重要なポイントは以下のとおりです。
- 私は私のカテゴリーに
-[viewWillAppear:]
と-[viewWillDisappear:]
のスウィズル実装内[self.navigationController setValue:navigationBar forKeyPath:NSStringFromSelector(@selector(navigationBar))]
を使用してUINavigationBar私のカスタムを設定します。 - 私のカスタムUINavigationBarのサイズを自動レイアウトを使用しています。
- カスタムナビゲーションバーを使用しているビューコントローラが表示されたら、既存のナビゲーションバーを保存し、カスタムナビゲーションバー付きのビューコントローラがポップされたときにナビゲーションコントローラに再設定します。
- この問題は元のView Controllerに影響するため、そのView Controllerの
navigationItem.titleView
はnilであるため、(一見)タイトル・ビューのフレームを手動で調整することはできません。
なぜこの奇妙なレイアウトの問題が発生しているのでしょうか?また、他の矛盾がありますので、時間があれば、フォーク+チェックアウトしてください。