ナビゲーションコントローラを介して調整された3つのVCのスタックがあり、ナビゲーションバーを使用しています。このナビゲーションバーで、各VCで、私は右のバーボタンアイテムとして同じボタン(「ログアウト」ボタン)を追加しました:新しいナビゲーションコントローラをプッシュすると、iosナビゲーションバーの右ボタン項目が移動する
UIBarButtonItem *logoutButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(logout)];
[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton];
[[self navigationController] pushViewController:categoriesViewController animated:YES];
したがって、各ビューコントローラは、ナビゲーションバーで、このログアウトボタンがあります。これらのコントローラのいずれかをナビゲーションスタックにプッシュすると、新しいView Controllerがロードされ、すべてが表示され、正しく機能しますが、新しいView Controllerが表示された直後(アニメーションが終了した後)にログアウトボタンが約3px右。
私は、VCのinitメソッドで、viewDidLoadとviewDidAppearでVCを押す前にボタンを追加しようとしましたが、それと同じ動作です。私はこの変化を取り除くことはできないようです。
新しいVCを(デフォルトのアニメーションを使用して)プッシュすると、戻るボタンが消えて再び表示されますが、[ログアウト]ボタンはそのまま残り、アニメーションが終了すると右に移動します。また、ボタン上のフォントはデフォルトのフォントではなく、システムフォント(Helvetica light)の1つが関連している可能性があります。
これはなぜ起こっているのですか?
私はデフォルトのフォントを使用していないためです。どういうわけか、ボタンを別のフォントで画面にレンダリングすると、そのフレームを再計算する必要があります。これが私の推測です。 –
私はこの同じ問題を抱えています。 –