注意する必要があるのは、NavigationControllerがビュー階層全体を管理することです。ナビゲーションコントローラーの高さのナビゲーションバーを変更し、ViewControllerBをそのナビゲーションコントローラーのスタックにプッシュするViewControllerAがある場合、同じナビゲーションバーを効果的に表示しています。高さをViewControllerBで元の高さに戻す必要があります。
「戻るボタンを分離してナビゲーションバーの前に配置する」とはどういう意味かわかりません。写真はありますか、それとも質問を明確にしていただけますか?
更新:あなたのコメントに基づいて、あなたが達成しようとしていることは可能ですが、悪い考えです。UINavigationControllerのnavigationBarは、画面の幅全体に広がります。このバーの幅を短くしてボタンを左側に表示するという技術的な実現可能性に関係なく、これは間違いなくHIGを侵害しており、標準のiOS機能を標準的に使用する必要があります。つまり、ナビゲーションバーは常にいずれかの方向でデバイスの幅にまたがる必要があります。標準の戻るボタンを別のボタンに置き換える場合は、leftNavigationItemを置き換えるだけで可能です。
self.navigationItem.leftNavigationItem = <SomeUIBarButtonItem>;
おそらく、hidesBackButton=YESも設定する必要があります。
更新2:これを小さなXcodeプロジェクトでテストしましたが、ナビゲーションバーの幅を変更できます。ばかげているように見えますが、それは可能です。ただし、ペン先を使用してそのペン先にNavigationBarプロパティを設定する場合、ボタンをビューコントローラのビューに追加するときは、フレームのy値を負の数に設定して、ナビゲーションバーと一致させる必要があります。 。それでも、このボタンでのテキストまたはターゲット/アクションの設定は機能していないようです。ナビゲーションバーは、その幅をそれ自体のために予約する場合があります。ナビゲーションバーの設定をペン先から削除して再試行しても、それは実行されません。ナビゲーションバー(または、実際には、ナビゲーションコントローラー)の存在は、他の何かがその領域でタッチイベントを受信するのを妨げているようです。