【问题标题】:change UIBarButtonItem back button更改 UIBarButtonItem 后退按钮
【发布时间】:2013-11-27 08:38:41
【问题描述】:

我正在尝试更改导航控制器 backBarButton, 没有创建背部的新功能。 这是我的代码:

UIImage *backButtonImage = [[UIImage imageNamed:@"backt.clicked@2x~iphone.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 27, 0, 27)];

(宽度=27,高度=27);

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

我得到了什么:

如何更改大小并删除标题?

【问题讨论】:

标签: ios uinavigationcontroller uibarbuttonitem


【解决方案1】:
- (UIBarButtonItem *)createBackMenuButton {
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton addTarget:self action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
    [backButton setFrame:BACK_BUTTON_FRAME];
    [backButton setExclusiveTouch:YES];
    [backButton setImage:[UIImage imageNamed:BACK_BUTTON_DEFAULT_ICON] forState:UIControlStateNormal];

    UIBarButtonItem *backButtonHolder = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    return backButtonHolder;
}

- (void)viewWillAppear:(BOOL)animated {

    self.navigationItem.leftBarButtonItem = [self createBackMenuButton];
}

【讨论】:

  • 我想要更简单的东西,我不想为后退项目添加新功能,我想使用默认导航控制器后退功能。
  • popViewControllerAnimated:这是默认的导航控制器返回功能:D
  • 是的,我知道 :) 但我很确定只有更改图像的选项不是你的事?
  • 这个简单的选项是改变按钮的背景图像,就像你做的那样;但是如果你想改变图像,而不是背景图像,你应该按照我的建议去做
【解决方案2】:

试试这个

UIImage *backButtonImage = [[UIImage imageNamed:@"backt.clicked@2x~iphone.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 27, 0, 27)];
CGRect frame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);

UIButton *button = [[UIButton alloc] initWithFrame:frame];
[button setImage:backButtonImage forState:UIControlStateNormal];
[button addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

编辑

UIImage *backButtonImage = [[UIImage imageNamed:@"backt.clicked@2x~iphone.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 27, 0, 27)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.topItem.title = @"";

【讨论】:

  • 我想要更简单的东西,我不想为后退项目添加新功能,我想使用默认导航控制器后退功能。这可能吗?
  • 当标题是 @"" 就像你写的那样 - 后退按钮消失了..如果我添加 @" " (带空格) 它会变大.. 无论如何图像大小并不是真的设置..
  • @Esty 如果实际图像太大,您应该真正调整其大小。忽略重资产
  • 那我该如何调整它的大小??
  • @Esty 您使用任何图像编辑器根据导航大小调整图像大小:)