uibarbuttomitem图像突出显示



当用户按此代码按UIBarButtomItem时,我正在尝试设置其他图像(突出显示):

self.addButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"addButton"]
                                                  style:UIBarButtonItemStylePlain
                                                 target:self
                                                 action:@selector(addAlert:)];
[self.addButton setBackgroundImage:[UIImage imageNamed:@"addButtonHigh"]
                              forState:UIControlStateSelected
                            barMetrics:UIBarMetricsDefault];
self.navigationItem.rightBarButtonItem = self.addButton;

但是它不起作用。

按" addButton"图像显示该按钮,但是当按下" AddButtonHigh"图像时不会出现。

预先感谢您Victor

将uicontrolstate从 UIControlStateSelected更改为 UIControlStateHighlighted。如果要更改突出显示的背景图像。您需要更改Uicontrolstate。

以下是代码段我测试。它有效。

self.addButton = [[UIBarButtonItem alloc] initWithTitle:@"hello" style:UIBarButtonItemStylePlain target:self action:@selector(addAlert:)];
[self.addButton setBackgroundImage:[UIImage imageNamed:@"font_minus_32.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.addButton setBackgroundImage:[UIImage imageNamed:@"font_plus_32.png"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
self.navigationItem.rightBarButtonItem = self.addButton;

也许以下代码是您想要的代码。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:[UIImage imageNamed:@"font_minus_32.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"font_plus_32.png"] forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(addAlert:) forControlEvents:UIControlEventTouchUpInside];
[btn sizeToFit];
self.addButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.rightBarButtonItem = self.addButton;
- (IBAction)buttonClicked:(id)sender 
{
UIImage *buttonImage = [UIImage imageNamed:@"home.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted];
}

uicontrolstateHighighighighed 突出显示控件的状态。当触摸在跟踪过程中和有修饰事件时,一个控件进入此状态。您可以通过突出显示的属性检索并设置此值。

uicontrolStateselected 选定的控件状态。对于许多控件,该状态对行为或外观没有影响。但是其他子类(例如,UisegringedControl类)可能会根据其选定的状态而具有不同的外观。您可以通过选定的属性检索并设置此值。

最新更新