gpt4 book ai didi

ios - 后退按钮在 UINavigationController 中奇怪地消失但继续工作

转载 作者:可可西里 更新时间:2023-11-01 03:06:13 25 4
gpt4 key购买 nike

在 iOS7 下,如果设置了特定的背景图片,我会遇到后退按钮项目不会显示的问题:

int imageSize = 21; //REPLACE WITH YOUR IMAGE WIDTH

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0)
forBarMetrics:UIBarMetricsDefault];
UIImage *barBackBtnImg = [[UIImage imageNamed:@"BackArrowDark.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barBackBtnImg
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];

这样做后,我在导航 Controller 中推送的任何 ViewController 都不会出现后退按钮项,即使按下它应该出现的位置,也会使它出现,并且此 View Controller 的任何后续推送都会显示该按钮在屏幕上。

此问题仅在 iOS7 下出现:在 iOS6 下一切正常。

使用 leftBarButtonItem 完全更改后退按钮会禁用后退滑动,因此这不是一个选项。

知道我做错了什么吗?

非常感谢您的考虑。

最佳答案

在尝试了不同的解决方案后,我发现在iOS7下改变backIndicatorImage效果最好,而且看起来很符合iOS7的界面范式:

[[UINavigationBar appearance] setTintColor:[UIColor grayColor]];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; // Takes out title

UIImage *backButtonImage = [UIImage imageNamed:@"BackArrowDark.png"];

if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
[[UINavigationBar appearance] setBackIndicatorImage:backButtonImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButtonImage];
} else {
int imageSize = 21; // REPLACE WITH YOUR IMAGE WIDTH

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[backButtonImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}

用这个方法:

  • 在导航 Controller 中返回时,后退按钮项目的转换与默认指示器相同(在 iOS6 下从后退按钮滑开离开);
  • 在 iOS6 下,backButton 已更改并保持其默认的 iOS6 行为。
  • 我很高兴!

关于ios - 后退按钮在 UINavigationController 中奇怪地消失但继续工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com