2

我只是想将我的导航控制器的 backBarButtonItem 设置为此图像

在此处输入图像描述

而不是 Apple 默认的箭头按钮,其标题与前一个视图控制器的标题相同。到目前为止,我得到的最接近的是上面水平拉伸的图像,标题仍然重叠。为此,我在 AppDelegate 中使用了此代码。

UIImage *backButtonImage = [UIImage imageNamed:@"back-button.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage
                                                  forState:UIControlStateNormal
                                                barMetrics:UIBarMetricsDefault];

我怎样才能摆脱标题(并防止按钮被拉伸)?

4

3 回答 3

2

当您使用外观时,您正在设置应用程序的后栏按钮项的背景图像。他们有背景图像的事实与他们是否显示标题无关。要使用自定义栏按钮项而不是默认的后退项,请查看此问题

在您的情况下,您可能根本不想使用外观,而是像上面的链接一样创建一个条形按钮项目,但使用-initWithImage:style:target:action:而不是-initWithTitle:style:target:action:

于 2013-01-03T22:20:00.133 回答
1

您可以设置 BarbuttonItem 的自定义图像,例如:-

- (void)viewDidLoad 
{
    UIImage* imageRight = [UIImage imageNamed:@"Home_btn.png"];
    CGRect frameimgRight = CGRectMake(100, 100, 50, 30);

    RightBtn = [[UIButton alloc] initWithFrame:frameimgRight];
    [RightBtn setBackgroundImage:imageRight forState:UIControlStateNormal];
    [RightBtn addTarget:self action:@selector(ActionhomeBtn)
                       forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *btnRight = [[UIBarButtonItem alloc]initWithCustomView:RightBtn];
    self.navigationItem.leftBarButtonItem = btnRight;

  [super viewDidLoad];

}

看起来像:-

在此处输入图像描述

希望它是你

于 2013-01-04T05:26:21.683 回答
0

我知道这个方法有效,应该在 ViewDidLoad 中调用:

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back-button.png"] style:UIBarButtonItemStyleBordered target:nil action:@selector(methodName)];

然后必须将其分配给导航栏:

item.rightBarButtonItem = backButtonItem;

然后推:

[self.navBar pushNavigationItem:item animated:NO];
于 2013-01-03T22:10:47.853 回答