当用户使用此代码按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”图像不会出现。
提前谢谢你, 维克多
答案 0 :(得分:1)
将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;
答案 1 :(得分:0)
- (IBAction)buttonClicked:(id)sender
{
UIImage *buttonImage = [UIImage imageNamed:@"home.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted];
}
UIControlStateHighlighted 控件的突出显示状态。当跟踪期间触摸进入和退出以及有触摸事件时,控件进入此状态。您可以通过突出显示的属性检索和设置此值。
UIControlStateSelected 控件的选定状态。对于许多控件,此状态对行为或外观没有影响。但是其他子类(例如,UISegmentedControl类)可能具有不同的外观,具体取决于其选择的状态。您可以通过selected属性检索和设置此值。