2016-09-22 14 views
0

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であるため、(一見)タイトル・ビューのフレームを手動で調整することはできません。

なぜこの奇妙なレイアウトの問題が発生しているのでしょうか?また、他の矛盾がありますので、時間があれば、フォーク+チェックアウトしてください。

答えて

0

UINavigationBarの新しいインスタンスでナビゲーションバーを再設定してこの問題を解決しました!

関連する問題