我想使用自定义后退按钮.在iOS 6中,一切都很完美,但iOS 7很奇怪.
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"back_button_normal"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12.0, 0, 12.0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
首先,它没有iOS 7箭头,也没有背景图像.
(俄语语言环境)

然后,如果按下按钮,则会出现背景图像.此外,我为UIControlStateHighlighted状态设置了背景图像,当您按住按钮时,按下突出显示的图像也会出现.按下任何后退按钮后,所有后退按钮都有背景图像.

但!如果您提供模态视图控制器,将其关闭,然后按任何视图控制器 - iOS 7每个后退按钮都会出现箭头.
我用的是DP5.这是UIKit的错误吗?
PS我还试图手动创建后退按钮,使用UIBarButtonItem,设置背景图像,然后self.navigationItem.backBarButtonItem = barButtonItem;没有帮助.然后我尝试将背景图像设置为禁用状态并更改我的栏按钮项的启用属性,也没有帮助.

关于iOS 7我有一些奇怪的麻烦UINavigationBar.我的应用程序中有一个适合iOS 6的应用程序.
- IOS 6 -

但是,当我尝试在iOS 7上运行它时,我的后退按钮消失了.它在那里,仍在工作,可点击但不可见;
- IOS 7 -

我该如何解决这个问题?
在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];
Run Code Online (Sandbox Code Playgroud)
执行此操作后,我在导航控制器中按下的任何ViewController都不会出现后退按钮项,即使按下它应该出现的位置,也会显示它,并且此视图控制器的任何后续按下都会使按钮出现在屏幕上.
这个问题只出现在iOS7下:一切都在iOS6下完美运行.
使用leftBarButtonItem完全更改后退按钮会禁用后滑动,因此这不是一个选项.
知道我做错了什么吗?
非常感谢您的考虑.
我的UIBack按钮没有出现问题,我不确定是什么导致它.
这是我制作后退按钮图像的代码,它在我的第一个ViewController中:
UIImage *backButtonHomeImage = [[UIImage imageNamed:@"backButtonImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
当您第一次进入下一个视图(由按钮中的segue完成)时,该按钮不可见,但可以看到要返回的文本.一旦我点击后退按钮,图像就会出现,并在下次单击时保持显示状态.
我不确定这是否与我的代码或它所在的文件或者它和iOS 7问题有关.