如何更改导航项(按钮)的背景图像?

Posted

技术标签:

【中文标题】如何更改导航项(按钮)的背景图像?【英文标题】:How to change background image for navigation item(button)? 【发布时间】:2012-05-05 10:34:16 【问题描述】:

我想为每个导航项(按钮)设置背景图片(通用)。

这些图像应该看起来如何?

是否有固定尺寸或者可以创建重复的背景图片?

然后如何以编程方式更改此背景图像?

谢谢你的帮助

更新:

我找到了更改此按钮背景的代码,但它不起作用。

UIImage *barButton = [UIImage imageNamed:@"button_background.png"];
    [[UIBarButtonItem appearance] setBackgroundImage:barButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

而且我不知道应该是哪个维度。

附:我想改变按钮的背景,就像你可以改变背景颜色(self.navigation.controller.nvigationBar.tintColor..)

【问题讨论】:

【参考方案1】:

下面的代码可能会解决您的问题

UIButton *backBtn     = [UIButton buttonWithType:UIButtonTypeCustom];  
UIImage *backBtnImage = [UIImage imageNamed:@"button_background.png"]  ;  
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal];  
[backBtn addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside];  
backBtn.frame = CGRectMake(0, 0, 54, 30);  
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ;  
self.navigationItem.leftBarButtonItem = cancelButton;

【讨论】:

它有效。你能告诉我这个背景图像的尺寸应该是什么尺寸,因为某处有“短标题”而某处有“很长的titleeeee”?请告诉我这个代码是重复背景还是固定的,因为如果是固定的,它就不是通用的。 tnx sry 但它不起作用,因为我必须设置操作,我需要做的就是为左侧导航栏项目设置背景图像。【参考方案2】:

恐怕你需要创建自定义返回按钮

检查这段代码

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
                               initWithImage:[UIImage imageNamed:@"yourImage.png"]
                                       style:UIBarButtonItemStyleBordered 
                                      target:nil 
                                      action:nil];

self.navigationItem.backBarButtonItem = backButton;
[backButton release];

让我知道它是否有效

干杯

【讨论】:

【参考方案3】:

类别呢? 例如,您可以这样做:

@interface UIBarButtonItem(JFAdditions)

- (id)initWithTitle:(NSString *)title image:(UIImage*)img;//add target and action if need

@end

 @implementation UIBarButtonItem(JFAdditions)

 - (id)initWithTitle:(NSString *)title image:(UIImage*)img
 
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
        //add background image and text on button, target and action if need, also
    self = [self initWithCustomView:btn];

    return self;

【讨论】:

以上是关于如何更改导航项(按钮)的背景图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 13 中全局设置栏按钮项背景图像

将鼠标悬停在文本上时,更改文本和背景图像

以编程方式更改条形按钮背景的图像大小?

如何在 Swift 中更改 TabBar 的颜色?图像作为导航栏中的背景?

弹出视图时不恢复自定义导航栏背景

在kivy中单击时如何更改按钮的背景图像?