Objective c 在触摸“后退”按钮之前,它的背景图像不会出现

Objective c 在触摸“后退”按钮之前,它的背景图像不会出现,objective-c,uinavigationbar,ios7,Objective C,Uinavigationbar,Ios7,我在后退按钮背景图像的[uibarbuttonite外观]中遇到一些问题 正常情况下(iOS 5和iOS 6),我可以像这样设置后退按钮的背景图像: [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 但在iOS 7上,背景图像不会出现在后退按钮上。奇怪的是,当按下后退按钮

我在后退按钮背景图像的
[uibarbuttonite外观]
中遇到一些问题

正常情况下(iOS 5和iOS 6),我可以像这样设置后退按钮的背景图像:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
但在iOS 7上,背景图像不会出现在后退按钮上。奇怪的是,当按下后退按钮一次时,背景图像就会出现

我尝试过为所有状态设置映像,以测试iOS7是否为未触及的后退按钮使用了某种新状态,但情况似乎并非如此


你知道我做错了什么吗?

试着改变按钮的色调。iOS 7中的UIBarButton出现了一些问题

我搜索了这个问题,发现并不是只有你有同样的问题。还有许多人在
ui外观方面面临同样的问题。以下是(向客户解释您的)证据:


  • 在这种情况下,您可以按照第二个链接中提供的答案进行操作

    您可以将
    UINavigationBar
    上的
    backindicationmage
    属性设置为自定义图像,也可以通过设置
    UINavigationBar
    上的
    tintColor
    属性来更改
    backindicationmage
    的颜色


    您可以创建自定义的
    uiBarButtonim
    并手动将其指定为
    UINavigationItem
    LeftBarButtonim

    我实现了一个在ios5+下工作的非常好的解决方案,如下所示:


    一个能使背景在iOS7上正确显示的解决方案位于。它使用了一种方法来修复苹果的bug(即当背景图像改变时,他们忘记在私有视图上调用setNeedsDisplay)。如果可能的话,使用无边界可能更好,但swizzling确实有效。

    要使用ios7,您需要使用

        UIImage *backButton = [[UIImage imageNamed:@"icon_back" resizableImageWithCapInsets:UIEdgeInsetsZero];
    if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
        [[UINavigationBar appearance] setBackIndicatorImage:backButton];
         [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButton];
    }else{
    //ios 5 and 6 code
    }
    

    你能为索赔提供一些证据吗?我有同样的问题,我必须向客户解释。这就是为什么我要问你:)首先你自己试试ti,如果它有效,你也可以向客户解释它。有可能用swizzled方法修复显示故障;请参阅我的回复。但其他一些选择可能更可取。不幸的是,我也面临着同样的问题。你有什么解决办法吗?没有。我必须创建一个自定义后退按钮作为
    ui按钮
    ,并将其设置为
    leftBarButtonItem
    ,以解决此问题:-(