我有一堆三个 VC,它们通过导航控制器进行协调并使用导航栏。在这个导航栏上,在每个 VC 中,我添加了相同的按钮(“注销”按钮)作为右栏按钮项:
UIBarButtonItem *logoutButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(logout)];
[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton];
[[self navigationController] pushViewController:categoriesViewController animated:YES];
所以每个视图控制器在导航栏中都有这个注销按钮。当我将这些控制器中的任何一个推送到导航堆栈上时,新的视图控制器会按预期加载,一切都显示并正常运行,但是在显示新视图控制器之后(动画完成后),注销按钮会移动大约 3px 到正确的。
我已经尝试在推动 VC 之前添加按钮,在 VC 的 init 方法中,在 viewDidLoad 和 viewDidAppear 中,但仍然是相同的行为。我似乎无法摆脱这种转变。
奇怪的是,当按下新的 VC(使用默认动画)时,后退按钮消失并重新出现,但“注销”按钮似乎留在原地,只是在动画结束后向右移动。此外,按钮上的字体不是默认字体而是系统字体之一(Helvetica light),可能与此有关。
关于为什么会发生这种情况的任何想法?