返回结果: UIBackButton背景图像未出现

7

我遇到了一个问题,我的UIBackbutton没有显示出来,我不确定是什么原因导致的。

这是我制作返回按钮图像的代码,位于我的第一个ViewController中:

UIImage *backButtonHomeImage = [[UIImage imageNamed:@"backButtonImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage  forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

当你第一次进入下一个视图(通过一个按钮的segue),按钮是不可见的,但是返回文本是可见的。一旦我点击了返回按钮,图片就会出现,并且在下次点击时它会一直保持出现。

我不确定这是我的代码问题还是所在的文件问题,或者是iOS 7的问题。


1
我遇到了完全相同的问题,这个问题出现在iOS 7上。我进行了很多搜索,但目前还没有找到解决方案。暂时保留蓝色默认的backBarButtonItem并删除自定义的backgroundImage可能会对您有所帮助。 - Engnyl
自定义图形在iOS7上经常出现问题。遇到了同样的麻烦。 - eagle.dan.1349
你找到解决方案了吗? - DivineDesert
这是一个苹果的bug;解决方案在iOS 7自定义返回按钮 - Carl Lindberg
4个回答

2

你可以尝试使用UIBarButtonItem并显式设置返回按钮背景,这样可能会更加顺利。

在我的iOS 7开发中,外观代理并不可靠,我曾经试图让返回按钮正常工作。我遇到了同样的问题,第一次显示按钮时背景没有正确显示。


0
如果您想更改返回按钮图像,只需编写以下两行代码即可:
[self.navigationBar setBackIndicatorImage:[UIImage imageNamed:@"icon-back"]];
[self.navigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"icon-back"]];

如果您创建UINavigationController的子类,就可以轻松自定义导航栏并推送和弹出控制器。


0
如果你只需要改变颜色,可以尝试这个代码:[[UINavigationBar appearance] setTintColor:[UIColor redColor]];

-1

试试这个:

self.navigationItem.hidesBackButton = NO;

如果你想把它添加到导航栏中,那么:
 UIImage* image4 = [UIImage imageNamed:@".....png"];
    button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 26, 26)];
    [button setBackgroundImage:....png forState:UIControlStateNormal];
    [button addTarget:self action:@selector(Selector)
         forControlEvents:UIControlEventTouchUpInside];
    [button setShowsTouchWhenHighlighted:YES];

    UIBarButtonItem *action = [[UIBarButtonItem alloc] initWithCustomView:button];
    NSArray *arr =[[NSArray alloc]initWithObjects:action, nil];
    self.navigationItem.rightBarButtonItems = arr;

使用这段代码创建的按钮不能作为 backBarButton 使用。 - Alex Trott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接