如何更改导航项(按钮)的背景图像?
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;
【讨论】:
以上是关于如何更改导航项(按钮)的背景图像?的主要内容,如果未能解决你的问题,请参考以下文章